Удалить последние 2 символа из имен файлов в папке, используя CMD
Привет, я пытаюсь заменить _C, которые находятся в конце каждого имени файла. Я использовал @echo off REN .?????????. *
Это прекрасно работает, но ширина имени файла может отличаться, так что еще я могу сделать, чтобы выбрать только последние 2 символа и переименовать его?
1 ответ
Вы можете использовать расширенное расширение переменной среды, например:
%PATH:~0,-2%
будет извлекать все, кроме последних 2 символов переменной PATH. Для более подробной информации, проверьте справку команды set.
И вы можете использовать команду FOR, чтобы применить его к каждому файлу. Не забудьте использовать отложенное расширение (используя восклицательный знак вместо процентов) внутри цикла.
FOR /F %I IN ('dir *.* /B') DO (
set a=%~nI
ren %I !a:~0,-2!%~xI
)
Проверьте помощь команды FOR для более подробной информации.
Обновление: я пересмотрел цикл FOR и создал пригодный для использования пакетный код (включая пояснительные комментарии), который работает также с длинными именами файлов, содержащими пробелы. Просто поместите это в файл.bat, а затем запустите этот пакет в каталоге, где вам нужно переименовать файлы. Примечание: процент должен быть удвоен при использовании внутри пакетного файла.
@echo off
rem use extensions and delayed expansion
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR /F "tokens=*" %%I IN ('dir *.* /B') DO (
rem Skip this batch
if "%0" NEQ "%%I" (
rem show renamed file
echo %%I
rem set A to filename without extension
set A=%%~nI
rem rename file to A minus last two characters with appended extension (which includes period)
ren "%%I" "!A:~0,-2!%%~xI"
))