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

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

Ответить
Настройки темы
CMD/BAT - копирование всех фалов за определённый (прошедщий) месяц

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


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

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


Каталог C:\1 в нём хранят .csv файлы за весь год, нужно скопировать все файлы только за сентябрь
файлы такого формата: 20180916.csv, 20180917.csv, 20180918.csv и т.д.

Отправлено: 05:27, 01-10-2018

 

Ветеран


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

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


forza11, смотрим только на имя файла? За сентябрь только этого года?
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:46, 01-10-2018 | #2



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

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


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата forza11:
Каталог C:\1 в нём хранят .csv файлы за весь год, нужно скопировать все файлы только за сентябрь »
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
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

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 01-10-2018 в 09:05.

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

Отправлено: 09:00, 01-10-2018 | #3


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


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

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


Цитата:
смотрим только на имя файла? За сентябрь только этого года?
Цитата:
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
powershell
Да, дату берём именно из имени файла.

Отправлено: 11:23, 01-10-2018 | #4


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата forza11:
Да, дату берём именно из имени файла. »
и здесь тоже напишу:
от же студент пошел нонче находчивый: раскидал задание по всем форумам и сиди жди себе, где вперед ответят... отличный подход!


Цитата forza11:
дату берём именно из имени файла. »
если файл переименовать, то содержание от этого не изменится, а вот фильтр не пропустит его. В реальных же условиях, как правило, требуется именно содержание...
Самый надежный вариант, это по дате последнего изменения, она сохраняется после переименования или даже копирования файла в другое место.

-------
scio me nihil scire. Ѫ


Отправлено: 11:38, 01-10-2018 | #5


Ветеран


Contributor


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

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


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
Если это не лабораторка, а рабочая проблема, лучше сделать по другому. Пишите письма

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 12:17, 01-10-2018 | #6


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


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

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


Цитата YuS_2:
Правильно уточняют выше, точнее описывайте условия. Дату файла берем из имени или из свойств файла?
А так, по описанным условиям:
powershell »
Этого хватило большое вам спасибо, и да, я не студент.... Просто вынужден был столкнуться с такой проблемой.
Не сочтите за наглость) Но как можно реализовать тоже самое, только с множеством каталогов, в которых так же нужно выбрать файлы за предыдущий месяц по названию файла?)
Т.е. вместо одного каталога с файлами будет 100 каталогов типа:
С:\1, С:\2, С:\3 и т.д.

Отправлено: 13:06, 01-10-2018 | #7


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


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

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


megaloman,
Цитата megaloman:
Если только файлы прошлого месяца (месяц берём из имени файла) и если только скопировать, то »
Работает, благодарю
И такой же вопрос еще, если возможно как то решить?
Теперь вместо одного каталога С:\1, есть много каталогов С:\1, С:\2, С:\3, С:\4 и т.д. из всех них нужно так же скопировать файлы по названию за предыдущий месяц...

Последний раз редактировалось forza11, 01-10-2018 в 16:34.


Отправлено: 16:27, 01-10-2018 | #8


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


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

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


megaloman,
Цитата megaloman:
1.то есть это реальные имена: 1,2,3...100? Или надо иметь какой-то список папок?
2.Куда при этом должны копироваться файлы? В какие папки?
3. Вы уверены, что файлы надо именно копировать, а не перемещать?
4. Не лучше ли сделать не простое копирование файлов, а архивацию, например, посредством winrar или 7z »
1 - это не реальные имена, реальные будут по названию мак-адресов типа: С:\СС8B552D6666
2 - файлы должно копироваться в такие же каталоги, только в другое место соответственно, т.е. С:\СС8B552D6666 > R:\СС8B552D6666 (каталоги могу сам создать заранее скриптом)
3 - именно копировать)
4 - архивация не нужна, они уже бэкапятся эти файлы, просто нужно скопировать много файлов из множества каталогов)

Отправлено: 17:08, 01-10-2018 | #9


Ветеран


Contributor


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

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


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)

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:
Или так
Код: Выделить весь код
@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 :Eof
forza11, Будьте корректны при описании папок. Если это мак-адреса, то там не могут быть кириллические символы, а в Вашем примере C - русское

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 01-10-2018 в 17:52.

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

Отправлено: 17:19, 01-10-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Копирование фалов по сети operlo Скриптовые языки администрирования Windows 0 10-10-2017 16:19
CMD/BAT - [решено] Копирование измененных фалов+логи dahiko Скриптовые языки администрирования Windows 9 23-02-2016 16:45
CMD/BAT - [решено] Поиск фалов по содержимому и копирование найденных файлов в папку Randow Скриптовые языки администрирования Windows 6 05-05-2015 22:31
Как задать на всех рабочих станциях домена определённый каталог переменных сред? Alexir Microsoft Windows NT/2000/2003 5 06-04-2007 14:29
Сервер налазил в инете 400 мб за месяц Delion Сетевые технологии 4 02-03-2004 10:48




 
Переход