Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


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

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


В принципе можно и CMD
Решаю задачу: Копирую файл самый старый по дате изменения в каждом месяце. Если самая старая дата изменения файла в месяце не 01, а например, 05, будет скопирован файл за 05 число
Код: Выделить весь код
@Echo Off
	Set "BoxIn=D:\CMD_Forum"
	Set "MaskIn=*.7z"
 
	Set "BoxOut=Z:\Box_Out" 

	Pushd "%BoxIn%"
	Set "First= "
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%MaskIn%" /B /A:-D /O:D /T:W`) DO Call :CopyFirst "%%f" %%~tf  
	Popd
GoTo :Eof

:CopyFirst
	Set "Tekd=%2"
	Set "Tekd=%Tekd:~-7%"
	If "%First%"=="%Tekd%" GoTo :Eof
	Set "First=%Tekd%"
	Copy %1 "%BoxOut%\" >nul
GoTo :Eof
Если скрипт предполагается выполнять многократно, то, чтобы избежать повторного копирования, перед Copy лучше поставить проверку на существование файла в выходной папке
Код: Выделить весь код
rem	Copy %1 "%BoxOut%\" >nul
	If Not Exist "%BoxOut%\%~1" Echo %1 &Copy %1 "%BoxOut%\" >nul
Примечание: отображение месяца и года в системе должны быть мм гггг

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


Последний раз редактировалось megaloman, 20-06-2018 в 21:24.


Отправлено: 15:58, 20-06-2018 | #8