Цитата
Sta1917:
Здравствуйте, есть батник добавляющий дату в начало файла/папки:
CMD/BAT - [решено] Изменение даты в названии файла/папки
Один аргумент - переименовываем. Например:
batnik.bat "Z:\тра ля ля\оба на.ух"
batnik.bat "Z:\тра ля ля\20011231 ой ё.mp3"
сегодня получим "Z:\тра ля ля\20211123 оба на.ух" "Z:\тра ля ля\20211123 ой ё.mp3"
Цитата
Sta1917:
И копирующий файл/папку с добавлением текущей даты:
CMD/BAT - [решено] Изменение даты в названии файла/папки
Два аргумента - копируем. Причём второй - папка, как и в Ваших примерах.
Цитата
Sta1917:
Корректно работает только: %CurDate:~0,8%
CMD/BAT - [решено] Изменение даты в названии файла/папки
Естественно:
Дату беру из WMIC (ГГГГММДДччммсс) в CurDate и этот формат не зависит от формата даты, как у Вас настроено в системе.
CurDate=%CurDate:~0,8% выдаёт ГГГГММДД
Не понимаю, что Вас в этом не устраивает. Хотите использовать Date - не смею ограничивать Вашу свободу
В Вашем примере могу предположить, что Date выдаёт ДД.ММ.ГГГГ, соответственно
Set "CurDate=%Date:~6,4%%Date:~3,2%%Date:~0,2%"
Виноват! Не вник в Ваш код, а Вы не озвучили, Вам хочется формат даты в именах ГГГГ.ММ.ДД,
а я сделал для ГГГГММДД
Исправил
[spoiler]Код:
[/spoiler]
Код: Выделить всё
@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
При смене формата даты в именах файлов надо переделывать регулярку для определения имеющейся даты в имени и формирование даты.