Удалить последние 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"
))
Другие вопросы по тегам