Внутри пакетного файла символы %
требуют удвоения:
@For /R "C:\Folder" %%G In (*.tif)Do @For /F "Tokens=1-5Delims=:-\/. " %%H In ("%%~tG")Do @Ren "%%G" "%%~H_%%~I%%~J_%%~K%%~L_%%~nxG"
Хотя в пакетном файле я бы предложил вам не используйте одну строку, (ограничение длины строки в пределах 80
символов для соответствия ширине окна cmd.exe по умолчанию и для облегчения чтения) :
@For /R "C:\Folder" %%G In (*.tif)Do @For /F "Tokens=1-5Delims=:-\/. " %%H In (
"%%~tG")Do @Ren "%%G" "%%~H_%%~I%%~J_%%~K%%~L_%%~nxG"
Кстати, ваш начальный cmd пример мог бы выглядеть примерно так:
For /R "C:\Folder" %G In (*.tif)Do @For /F "Tokens=1-5Delims=:-\/. " %H In ("%~tG")Do @Ren "%G" "%~H_%~I%~J_%~K%~L_%~nxG"
У вас было несколько ненужных скобок и неиспользованный токен, и вы могли объединить имя и расширение в один модификатор вместо два. Вы могли также удалить ненужные расширения и модификаторы из имени файла, которое нужно переименовать.
[Edit /] Кстати, вы заметите, что я не ответил на ваш второй вопрос, потому что модификатор
%~t
не выводит секунды и миллисекунды,
(поэтому вы, вероятно, могли бы удалить разделитель .
) , поэтому вы не можете извлечь его из этого кода. Поэтому вам нужно будет использовать альтернативный метод, и этот сайт не предоставляет бесплатную услугу написания кода, поэтому вам нужно будет опубликовать новый вопрос, как только вы получите этот код. Кроме того, проблемы / проблемы должны быть ограничены только одним на пост.