Войти

Показать полную графическую версию : [решено] Скопировать файлы за 6 месяцев предыдущего года (2018)


forza11
17-02-2019, 20:57
Добрый день.
Помогите решить проблему, нужно скопировать большой объём текстовых файлов по маске, за 2018 год, но не полностью, а за 6 месяцев 2018 года, начиная с июля по декабрь включительно.
Т.е. есть много папок допустим С:\1 С:\2 С:\3 С:\4 С:\5
В этих папках лежат текстовые файлы .csv по суткам за весь год
Файлы называются по дате например: 20180701.csv 20180702.csv 20180703.csv 20180704.csv 20180705.csv
Нужно скопировать из всех каталогов С:\1 С:\2 С:\3 С:\4 С:\5 все файлы только за 6 месяцев 2018 года начиная с июля до декабрь, т.е. с 20180701.csv по 20181231.csv

megaloman
18-02-2019, 12:14
forza11, @Echo Off
cls
SetLocal
Set "@In1=Z:\Papka 1"
Set "@In2=Z:\Papka 2"
Set "@In3=Z:\Papka3"

Set /A Dt1=20180701
Set /A Dt2=20181231
Set "Mask=20??????.csv

Set "Out=Z:\Box_Arc"

FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul Set "@In"`) DO (
Echo +++ %%j
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /S /A:-D "%%j\%Mask%"`) DO Call :OutFile "%%f" "%Out%" %Dt1% %Dt2%
)
EndLocal
Pause
GoTo :Eof

:OutFile
Set "FDt=%~n1"
2>nul Set /A FDt=%FDt:~0,8% ||Exit /B 1

If %FDt% LSS %3 Exit /B 0
If %FDt% GTR %4 Exit /B 0

If Not Exist "%~2%~p1" Md "%~2%~p1"
>nul Xcopy /D /Y /R %1 "%~2%~p1"
rem >nul Move /Y %1 "%~2%~p1"
Exit /B %ErrorLevel%
Внутренний голос мне шепчет, что Вам надо не скопировать файлы за период, а переместить.
В этом случае удалите строку с Xcopy и уберите Rem перед Move.
Ограничение: Должно быть Dt1 <= Dt2

forza11
18-02-2019, 17:00
megaloman,
Спасибо, сейчас попробую =)
На счёт переместить тоже верно, понадобится.




© OSzone.net 2001-2012