Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Копирование нескольких файлов из папки в другую с прошедшей датой

Ответить
Настройки темы
CMD/BAT - Копирование нескольких файлов из папки в другую с прошедшей датой

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток! Помогите пожалуйста решить одну задачу. Есть программа которая создает отчеты в некой папке "1" , каждый день в 6 утра появляются 4 файла отчета их нужно скопировать в другую папку по сети ( папка должна быть с датой предыдущего дня такого типа (дата\месяц\год). Например сегодня 3.08.2013 в 6 утра в папке "1" появятся 4 файла отчета за 2.08.2013 их нужно скопировать в созданную папку по сети с такой же датой 2.08.2013
Вот что примерно нашел

Код: Выделить весь код
chcp 1251
echo off
cls

md \\SERVER-1\Obmen\%date:~6,4%.%date:~3,2%.%date:~0,2%
if not exist \\SERVER-1\Obmen\%date:~6,4%.%date:~3,2%.%date:~0,2% goto error5

xcopy D:\1 \\SERVER-1\Obmen\%date:~6,4%.%date:~3,2%.%date:~0,2% /y /e /z /c /h
goto exit

:exit

Таким образом папка создается но с текущей датой (3.08.2013) а нужно на день раньше (2.08.2013)
Файлы копируются все подряд
Нужно именно последние созданные 4 файла
так же нашел вот такой код
Код: Выделить весь код
set dir1=[Путь к папке с файлами] set dir2=[Путь к папке для размещения копий] setlocal enabledelayedexpansion set /a num=0 set /a err=0 for /f "tokens=* delims=" %%i in ('dir /b /o:-d /t:W "%dir1%\*.*"') do ( set /a num+=1 if /i !num! leq [количество копируемых файлов] ( copy "%dir1%\%%i" "%dir2%\" > nul if errorlevel 1 (echo %%i >> errorslog.txt set /a err+=1 ) echo copy file...%%i) else ( echo skip file... %%i ) ) echo COUNT OF ERRORS: %err% pause
Описание кода: В квадратные скобки необходимо подставить реальные значения.
Директива setlocal enabledelayedexpansion включает режим отложенного расширения переменных, который позволяет сделать изменения счетчика num видимым внутри цикла (по умолчанию это не так).
Команда dir /b /o:-d /t:W "%dir1%\*.*" определяет порядок копирования файлов. В данном случае первым будет самый новый файл. При помощи других ключей команды dir можно задать другие условия.
Как быть, помогите

Отправлено: 08:40, 03-08-2013

 

Аватара для sunnykey

Пользователь


Сообщения: 124
Благодарности: 47

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#Powershell script.
#Don't forget unlock script executing by 
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
#Save this file with ".ps1" extension
#перемеменная OlderThan отвечает за разницу дней от текущей даты
$SourcePath="D:\1"
$DestinationPath="\\SERVER-1\Obmen\"
$OlderThan=New-TimeSpan -Days 1
$Yesterday=Get-Date -Date ((Get-Date)-$OlderThan) -Format dd.MM.yyyy
New-Item "${DestinationPath}\${Yesterday}" -ItemType Directory
if (-not (Test-Path -Path "${DestinationPath}\${Yesterday}")) {
    "Ошибка создания папки"
    return
}
Get-ChildItem $SourcePath | `
    Where-Object {$_.Attributes -ne [System.IO.FileAttributes]::Directory} | `
    Sort-Object -Property CreationTime -Descending | `
    Select-Object -First 4 | `
    Copy-Item -Destination "${DestinationPath}\${Yesterday}" -Force

-------
cmd умри, powershell живи=)
Powershel 4.0 microsoft.com/ru-ru/download/details.aspx?id=40855

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:13, 03-08-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо!!!)все заработало) пришлось повозиться с PowerShell на WS2003

Отправлено: 21:39, 05-08-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата salmans:
пришлось повозиться с PowerShell на WS2003 »
А что там особенного такого на «WS2003»?

Отправлено: 22:31, 05-08-2013 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


да поставить поставил а разрешение ны выполнение скрипта не активировалось никак( пока обновление небольшое не поставил не заработало)

Отправлено: 02:40, 06-08-2013 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Как именно пытались разрешить исполнение скриптов? И что за обновление?

Отправлено: 03:01, 06-08-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Копирование нескольких файлов из папки в другую с прошедшей датой

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Создание папки с датой в названии и копирование туда файлов Chiz3000 Скриптовые языки администрирования Windows 2 30-07-2013 10:09
CMD/BAT - Поиск и копирование нескольких строк из текстового файла. valen Скриптовые языки администрирования Windows 0 07-11-2011 17:27
CMD/BAT - [решено] смена размера копируемых файлов из одной папки в другую Вовка13 Скриптовые языки администрирования Windows 4 10-09-2011 22:07
CMD/BAT - Перемещение нескольких папок из папки E2E2~1 ameds Скриптовые языки администрирования Windows 12 23-06-2010 17:27
CMD/BAT - [решено] Копирование с флешки в папку на компьютере файлов с текущей датой bazik83 Скриптовые языки администрирования Windows 6 19-05-2010 10:17




 
Переход