CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
-
forza11
CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
Каталог C:\1 в нём хранят .csv файлы за весь год, нужно скопировать все файлы только за сентябрь
файлы такого формата: 20180916.csv, 20180917.csv, 20180918.csv и т.д.
файлы такого формата: 20180916.csv, 20180917.csv, 20180918.csv и т.д.
-
forza11
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
forza11, смотрим только на имя файла? За сентябрь только этого года?
-
forza11
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
Цитата forza11:
Каталог C:\1 в нём хранят .csv файлы за весь год, нужно скопировать все файлы только за сентябрь
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
powershell
Код:
Каталог C:\1 в нём хранят .csv файлы за весь год, нужно скопировать все файлы только за сентябрь
CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
powershell
Код:
Код: Выделить всё
$src = 'c:\1'
$dst = 'd:\2'
$flt = '*.csv'
copy (dir $src\* -filt $flt -file|?{$_.lastwritetime.month -eq (get-date).addmonths(-1).month}).fullname $dst-
YuS_2
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
Цитата:
смотрим только на имя файла? За сентябрь только этого года?
Цитата:
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
powershell
Да, дату берём именно из имени файла.
смотрим только на имя файла? За сентябрь только этого года?
Цитата:
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
powershell
Да, дату берём именно из имени файла.
-
forza11
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
Цитата forza11:
Да, дату берём именно из имени файла.
и здесь тоже напишу:
от же студент пошел нонче находчивый: раскидал задание по всем форумам и сиди жди себе, где вперед ответят... отличный подход!

Цитата forza11:
дату берём именно из имени файла.
если файл переименовать, то содержание от этого не изменится, а вот фильтр не пропустит его. В реальных же условиях, как правило, требуется именно содержание...
Самый надежный вариант, это по дате последнего изменения, она сохраняется после переименования или даже копирования файла в другое место.
Да, дату берём именно из имени файла.
CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
и здесь тоже напишу:
от же студент пошел нонче находчивый: раскидал задание по всем форумам и сиди жди себе, где вперед ответят... отличный подход!

Цитата forza11:
дату берём именно из имени файла.
CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
если файл переименовать, то содержание от этого не изменится, а вот фильтр не пропустит его. В реальных же условиях, как правило, требуется именно содержание...
Самый надежный вариант, это по дате последнего изменения, она сохраняется после переименования или даже копирования файла в другое место.
-
YuS_2
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
forza11, Если только файлы прошлого месяца (месяц берём из имени файла) и если только скопировать, то
Код:
Если это не лабораторка, а рабочая проблема, лучше сделать по другому. Пишите письма
Код:
Код: Выделить всё
@Echo Off %
cls
Set "BoxIn=Z:\Box_In"
Set "BoxOut=Z:\Box_Out"
Set "Ext=csv"
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "tNow=%%d"
If %tNow:~4,2%==01 (Set /A Month=%tNow:~0,6%-89) Else (Set /A Month=%tNow:~0,6%-1)
Xcopy /D "%BoxIn%\%Month%??.%Ext%" "%BoxOut%\%Month%\"
pause
Exit /BЕсли это не лабораторка, а рабочая проблема, лучше сделать по другому. Пишите письма

-
megaloman
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
Цитата YuS_2:
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
powershell
Этого хватило
большое вам спасибо, и да, я не студент.... Просто вынужден был столкнуться с такой проблемой.
Не сочтите за наглость) Но как можно реализовать тоже самое, только с множеством каталогов, в которых так же нужно выбрать файлы за предыдущий месяц по названию файла?)
Т.е. вместо одного каталога с файлами будет 100 каталогов типа:
С:\1, С:\2, С:\3 и т.д.
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
powershell
CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
Этого хватило
большое вам спасибо, и да, я не студент.... Просто вынужден был столкнуться с такой проблемой.Не сочтите за наглость) Но как можно реализовать тоже самое, только с множеством каталогов, в которых так же нужно выбрать файлы за предыдущий месяц по названию файла?)
Т.е. вместо одного каталога с файлами будет 100 каталогов типа:
С:\1, С:\2, С:\3 и т.д.
-
forza11
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
megaloman,
Цитата megaloman:
Если только файлы прошлого месяца (месяц берём из имени файла) и если только скопировать, то
Работает, благодарю
И такой же вопрос еще, если возможно как то решить?
Теперь вместо одного каталога С:\1, есть много каталогов С:\1, С:\2, С:\3, С:\4 и т.д. из всех них нужно так же скопировать файлы по названию за предыдущий месяц...
Цитата megaloman:
Если только файлы прошлого месяца (месяц берём из имени файла) и если только скопировать, то
CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
Работает, благодарю
И такой же вопрос еще, если возможно как то решить?
Теперь вместо одного каталога С:\1, есть много каталогов С:\1, С:\2, С:\3, С:\4 и т.д. из всех них нужно так же скопировать файлы по названию за предыдущий месяц...
-
forza11
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
megaloman,
Цитата megaloman:
1.то есть это реальные имена: 1,2,3...100? Или надо иметь какой-то список папок?
2.Куда при этом должны копироваться файлы? В какие папки?
3. Вы уверены, что файлы надо именно копировать, а не перемещать?
4. Не лучше ли сделать не простое копирование файлов, а архивацию, например, посредством winrar или 7z
1 - это не реальные имена, реальные будут по названию мак-адресов типа: С:\СС8B552D6666
2 - файлы должно копироваться в такие же каталоги, только в другое место соответственно, т.е. С:\СС8B552D6666 > R:\СС8B552D6666 (каталоги могу сам создать заранее скриптом)
3 - именно копировать)
4 - архивация не нужна, они уже бэкапятся эти файлы, просто нужно скопировать много файлов из множества каталогов)
Цитата megaloman:
1.то есть это реальные имена: 1,2,3...100? Или надо иметь какой-то список папок?
2.Куда при этом должны копироваться файлы? В какие папки?
3. Вы уверены, что файлы надо именно копировать, а не перемещать?
4. Не лучше ли сделать не простое копирование файлов, а архивацию, например, посредством winrar или 7z
»
1 - это не реальные имена, реальные будут по названию мак-адресов типа: С:\СС8B552D6666
2 - файлы должно копироваться в такие же каталоги, только в другое место соответственно, т.е. С:\СС8B552D6666 > R:\СС8B552D6666 (каталоги могу сам создать заранее скриптом)
3 - именно копировать)
4 - архивация не нужна, они уже бэкапятся эти файлы, просто нужно скопировать много файлов из множества каталогов)
-
forza11
Re: CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц
forza11,
Код:
Пропишите свои пути без \ на конце. Для Вашей постановки инбокс указывать C:
Или так
[spoiler]Код: [/spoiler]
forza11, Будьте корректны при описании папок. Если это мак-адреса, то там не могут быть кириллические символы, а в Вашем примере C - русское
Код:
Код: Выделить всё
@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "BoxOut=Z:\Box_Out"
Set "Ext=csv"
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "tNow=%%d"
If %tNow:~4,2%==01 (Set /A Month=%tNow:~0,6%-89) Else (Set /A Month=%tNow:~0,6%-1)
Call :@ СС8B552D6666
Call :@ СС8A552D8888
Call :@ СС8C552D9999
Call :@ СF8B552D7777
pause
GoTo :Eof
:@
If Exist "%BoxIn%\%1\%Month%??.%Ext%" Xcopy /D "%BoxIn%\%1\%Month%??.%Ext%" "%BoxOut%\%1\%Month%\" >nul
GoTo :EofПропишите свои пути без \ на конце. Для Вашей постановки инбокс указывать C:
Или так
[spoiler]Код: [/spoiler]
Код: Выделить всё
@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "BoxOut=Z:\Box_Out"
Set "Ext=csv"
Set Mac=СС8B552D6666 СС8A552D8888 СС8C552D9999 СF8B552D7777
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "tNow=%%d"
If %tNow:~4,2%==01 (Set /A Month=%tNow:~0,6%-89) Else (Set /A Month=%tNow:~0,6%-1)
FOR %%i IN (%Mac%) DO Call :@ %%i
pause
GoTo :Eof
:@
If Exist "%BoxIn%\%1\%Month%??.%Ext%" Xcopy /D "%BoxIn%\%1\%Month%??.%Ext%" "%BoxOut%\%1\%Month%\" >nul
GoTo :Eofforza11, Будьте корректны при описании папок. Если это мак-адреса, то там не могут быть кириллические символы, а в Вашем примере C - русское