Добрый день, коллеги, нужна помощь. Нужен скрипт который скопирует все файлы вместе со структурой каталогов, в которых они лежали и именно измененные в определенном диапазоне даты например с 5 февраля 2017г. до 10 октября 2019 года. Папка оригинал очень большого размера около 2 Тб (файлы всякие, от текстовых до видео)
В общем результатом должна быть папка со скопированными файлами этого диапазона и каталогами где они лежали. Спасибо. Всех с 23 Февраля!
Любой язык - Скрипт который скопирует все файлы измененные в определенный период с каталогами
-
megaloman
Re: Любой язык - Скрипт который скопирует все файлы измененные в определенный период с каталогами
Боюсь, на большом количестве файлов придётся долго ждать
Дата в системе должна быть настроена как дд.мм.гггг
[spoiler]Код: [/spoiler]
Если хотите наблюдать за процессом, уберите rem перед Echo
Дата в системе должна быть настроена как дд.мм.гггг
[spoiler]Код: [/spoiler]
Код: Выделить всё
@Echo Off
cls
Set "Dt1=17.01.2006"
Set "Dt2=09.12.2007"
Set "BoxIn=D:\CMD_Forum\*.*"
Set "BoxOut=Z:\Box_Out"
Set /A DDt2=%Dt2:~-4%%Dt2:~3,2%%Dt2:~0,2%
Set "OutDir=%Dt1:~-4%.%Dt1:~3,2%.%Dt1:~0,2%_%Dt2:~-4%.%Dt2:~3,2%.%Dt2:~0,2%"
FOR /F "usebackq delims=" %%f IN (`2^>nul Xcopy "%BoxIn%" "%Tmp%" /D:%Dt1:~3,2%-%Dt1:~0,2%-%Dt1:~-4% /S /Y /L`) Do Call :Out "%%f" "%BoxOut%\%OutDir%%%~pf" "%%~tf" %DDt2%
rem pause
Exit /B 0
:Out
If %3=="" Exit /B 0
Set "TDt=%~3"
Set /A TDt=%TDt:~6,4%%TDt:~3,2%%TDt:~0,2%
If %TDt% GTR %4 Exit /B 0
rem Echo %1
>nul Xcopy /Y /D %1 %2
Exit /BЕсли хотите наблюдать за процессом, уберите rem перед Echo
-
ven7
Re: Любой язык - Скрипт который скопирует все файлы измененные в определенный период с каталогами
Спасибо большущее, выручили!
Спасибо большущее, выручили! То, что долго ждать придется - это понятно, благодарю! 
Спасибо большущее, выручили! То, что долго ждать придется - это понятно, благодарю! 
-
ven7
Re: Любой язык - Скрипт который скопирует все файлы измененные в определенный период с каталогами
megaloman, Почему то полностью не отрабатывает, заканчивает работу после копирования нескольких вложенных папок? Может из-за русских названий папок или из-за правил безопасности на папки, хотя выполняю под административной учеткой, есть мысли?
-
megaloman
Re: Любой язык - Скрипт который скопирует все файлы измененные в определенный период с каталогами
ven7,
Цитата ven7:
Почему то полностью не отрабатывает
Возможно, в путях спецсимволы, которые Xcopy некорректно обрабатываются. Подозреваю, надо иные средства, чем cmd
Вот вариант скрипта с созданием лог-файла рядом с батником с расширением .log. Хотелось бы посмотреть, где скрипт затыкается.
[spoiler]Код: [/spoiler]
Цитата ven7:
Почему то полностью не отрабатывает
Любой язык - Скрипт который скопирует все файлы измененные в определенный период с каталогами
Возможно, в путях спецсимволы, которые Xcopy некорректно обрабатываются. Подозреваю, надо иные средства, чем cmd
Вот вариант скрипта с созданием лог-файла рядом с батником с расширением .log. Хотелось бы посмотреть, где скрипт затыкается.
[spoiler]Код: [/spoiler]
Код: Выделить всё
@Echo Off
cls
Set "Dt1=17.01.2006"
Set "Dt2=09.12.2007"
Set "BoxIn=D:\CMD_Forum\*.*"
Set "BoxOut=D:\Box_Out"
Set /A DDt2=%Dt2:~-4%%Dt2:~3,2%%Dt2:~0,2%
Set "OutDir=%Dt1:~-4%.%Dt1:~3,2%.%Dt1:~0,2%_%Dt2:~-4%.%Dt2:~3,2%.%Dt2:~0,2%"
>%~dpnx0.log 2>&1 (FOR /F "usebackq delims=" %%f IN (`2^>nul Xcopy "%BoxIn%" "%Tmp%" /D:%Dt1:~3,2%-%Dt1:~0,2%-%Dt1:~-4% /S /Y /L`) Do Call :Out "%%f" "%BoxOut%\%OutDir%%%~pf" "%%~tf" %DDt2%)
rem pause
Exit /B 0
:Out
If %3=="" Exit /B 0
Set "TDt=%~3"
Set /A TDt=%TDt:~6,4%%TDt:~3,2%%TDt:~0,2%
If %TDt% GTR %4 Exit /B 0
Echo ==== Xcopy /Y /D %1 %2
Xcopy /Y /D %1 %2
Exit /B-
ven7
Re: Любой язык - Скрипт который скопирует все файлы измененные в определенный период с каталогами
Часть из лог файла, там имена каталогов и самих файлов длинные с пробелами с подчеркиванием итп. Две последние строки из лога являются последними, всего строк 1865. Везде скопировано файлов "0"
Скрытый текст
[spoiler]Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\1C_Arenda\Sklad metall ceha 23.xls" "d:\store_out\2018.06.01_2019.10.01\Store\1C_Arenda\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\1C_Arenda\Sklad metall OMTS.xls" "d:\store_out\2018.06.01_2019.10.01\Store\1C_Arenda\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\Аренда\Регион Развитие\РАЗНОЕ\Сканы объектов\Складской корпус\3 этаж часть 1.pdf" "d:\store_out\2018.06.01_2019.10.01\Store\Аренда\Регион Развитие\РАЗНОЕ\Сканы объектов\Складской корпус\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\Аренда\Регион Развитие\РАЗНОЕ\Сканы объектов\Складской корпус\3 этаж часть 2.pdf" "d:\store_out\2018.06.01_2019.10.01\Store\Аренда\Регион Развитие\РАЗНОЕ\Сканы объектов\Складской корпус\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\Аукцион\Регион Развитие\СОТРУДНИКИ\Фамилия\СКАНЫ для Дирекции\Эшелон компания продление.pdf" "d:\store_out\2018.06.01_2019.10.01\StoreАукцион\Регион Развитие\СОТРУДНИКИ\Фамилия\СКАНЫ для Дирекции\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\Аукцион\Регион Развитие\СОТРУДНИКИ\Фамилия2\Свободные_площади_для_сдачи_в_аренду.xlsx" "d:\store_out\2018.06.01_2019.10.01\Store\Аукцион\Регион Развитие\СОТРУДНИКИ\Фамилия2\"
Скопировано файлов: 0.[/spoiler]
Скрытый текст
[spoiler]Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\1C_Arenda\Sklad metall ceha 23.xls" "d:\store_out\2018.06.01_2019.10.01\Store\1C_Arenda\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\1C_Arenda\Sklad metall OMTS.xls" "d:\store_out\2018.06.01_2019.10.01\Store\1C_Arenda\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\Аренда\Регион Развитие\РАЗНОЕ\Сканы объектов\Складской корпус\3 этаж часть 1.pdf" "d:\store_out\2018.06.01_2019.10.01\Store\Аренда\Регион Развитие\РАЗНОЕ\Сканы объектов\Складской корпус\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\Аренда\Регион Развитие\РАЗНОЕ\Сканы объектов\Складской корпус\3 этаж часть 2.pdf" "d:\store_out\2018.06.01_2019.10.01\Store\Аренда\Регион Развитие\РАЗНОЕ\Сканы объектов\Складской корпус\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\Аукцион\Регион Развитие\СОТРУДНИКИ\Фамилия\СКАНЫ для Дирекции\Эшелон компания продление.pdf" "d:\store_out\2018.06.01_2019.10.01\StoreАукцион\Регион Развитие\СОТРУДНИКИ\Фамилия\СКАНЫ для Дирекции\"
Скопировано файлов: 0.
==== Xcopy /Y /D "E:\Store\Аукцион\Регион Развитие\СОТРУДНИКИ\Фамилия2\Свободные_площади_для_сдачи_в_аренду.xlsx" "d:\store_out\2018.06.01_2019.10.01\Store\Аукцион\Регион Развитие\СОТРУДНИКИ\Фамилия2\"
Скопировано файлов: 0.[/spoiler]
-
megaloman
Re: Любой язык - Скрипт который скопирует все файлы измененные в определенный период с каталогами
Цитата:
Везде скопировано файлов "0"
это возможно, если Вы повторно запустили копирование одного и того же каталога с одинаковым периодом времени - /d в xcopy позволяет не перезаписывать имеющиеся файлы, если они не изменялись.
Везде скопировано файлов "0"
это возможно, если Вы повторно запустили копирование одного и того же каталога с одинаковым периодом времени - /d в xcopy позволяет не перезаписывать имеющиеся файлы, если они не изменялись.