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

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

Ветеран


Contributor


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

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


Цитата Sta1917:
Здравствуйте, есть батник добавляющий дату в начало файла/папки: »
Один аргумент - переименовываем. Например:

batnik.bat "Z:\тра ля ля\оба на.ух"
batnik.bat "Z:\тра ля ля\20011231 ой ё.mp3"

сегодня получим "Z:\тра ля ля\20211123 оба на.ух" "Z:\тра ля ля\20211123 ой ё.mp3"
Цитата Sta1917:
И копирующий файл/папку с добавлением текущей даты: »
Два аргумента - копируем. Причём второй - папка, как и в Ваших примерах.
Цитата Sta1917:
Корректно работает только: %CurDate:~0,8% »
Естественно:
Дату беру из WMIC (ГГГГММДДччммсс) в CurDate и этот формат не зависит от формата даты, как у Вас настроено в системе.
CurDate=%CurDate:~0,8% выдаёт ГГГГММДД

Не понимаю, что Вас в этом не устраивает. Хотите использовать Date - не смею ограничивать Вашу свободу
В Вашем примере могу предположить, что Date выдаёт ДД.ММ.ГГГГ, соответственно
Set "CurDate=%Date:~6,4%%Date:~3,2%%Date:~0,2%"
Виноват! Не вник в Ваш код, а Вы не озвучили, Вам хочется формат даты в именах ГГГГ.ММ.ДД,
а я сделал для ГГГГММДД
Исправил
Код: Выделить весь код
@Echo Off
cls & If "%~1"=="" Exit /B
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETime /VALUE') DO Set "CurDate=%%d"
	Set "CurDate=%CurDate:~0,4%.%CurDate:~4,2%.%CurDate:~6,2%"

	Set "In=%~1"
	If "%In:~-1%"=="\" Set "In=%In:~0,-1%"

	If "%~2"=="" Call :MyReName "%In%" &Exit /B

	Call :MyReName "%In%" "Out"
	If Not Exist "%In%\*.*" (
		Copy "%In%" "%~dp2%Out%"
	) Else (
		Xcopy "%In%\*.*" "%~dp2%Out%" /H /Y /C /R /D /E /V /I /Q
	)
Exit /B

:MyReName
	Set "In1=%~nx1"
	Echo %~nx1| >nul 2>nul FindStr /X /R /C:"^20[0-4][0-9]\.[0-1][0-9]\.[0-3][0-9].*$"
	If %ErrorLevel%==0 (Set "In1=%CurDate%%In1:~10%") Else (Set "In1=%CurDate% %In1%")
	If "%~2"=="" (Ren "%In%" "%In1%") Else (Set "%~2=%In1%")
Exit /B
При смене формата даты в именах файлов надо переделывать регулярку для определения имеющейся даты в имени и формирование даты.

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


Последний раз редактировалось megaloman, 07-04-2022 в 17:18.


Отправлено: 15:18, 23-11-2021 | #5