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

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

Ветеран


Contributor


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

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


finderhd, Применительно к моему скрипту, надо делать так:
Код: Выделить весь код
	Call :MyMove "C:\test\test1" "C:\test\test1" "report_stat" "*ReadUser.txt"
	Call :MyMove "C:\test\test2" "C:\test\test2" "report_stat" "*ReadUser.txt"
	Call :MyMove "C:\test\test3" "C:\test\test3" "report_stat" "*ReadUser.txt"
Или, в крайнем случае,
Код: Выделить весь код
Call :MyMove "C:\test\test1" "C:\test\test1" "report_stat" "*.txt"
То есть пИшите маску до года и маску после года, скрипт из этого склеивает маску для нужного года.
Цитата finderhd:
Нужно чтобы создавались папки и в них перемещались файлы, у которых соответствующий год создания. »
Не понимаю еще раз: год в имени файла или надо вытянуть год из свойств файла? Ваш скрипт этого не делает, он берёт год по маске из имени файла. Иначе Ваш скрипт полностью не годится.
Кстати, вместо Robocopy вполне подойдёт Move
Код: Выделить весь код
@Echo Off
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Year=%%d"
	Set /A Year=%Year:~0,4%

rem	Call :MyMove "Z:\Box_In" "Z:\Box_Out" "report_stat" "*ReadUser.txt"

	Call :MyMove "C:\test\test1" "C:\test\test1" "report_stat" "*ReadUser.txt"
	Call :MyMove "C:\test\test2" "C:\test\test2" "report_stat" "*ReadUser.txt"
	Call :MyMove "C:\test\test3" "C:\test\test3" "report_stat" "*ReadUser.txt"
Exit /B 0

:MyMove
	FOR /L %%i IN (0,-1,-1) DO (
		Call Set /A Y=%Year%+%%i
		Call 2>nul Md "%~2\%%Y%%"
		Call Move /Y "%~1\%~3%%Y%%%~4" "%~2\%%Y%%\"			
	)
Exit /B

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


Последний раз редактировалось megaloman, 17-01-2020 в 16:37.

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

Отправлено: 16:28, 17-01-2020 | #12