У меня есть изображения с именами файлов, например, 0034343.jpg и я хочу удалить начальные нули, оставив 34343.jpg в качестве нового имени файла.

Как я могу сделать это в командной строке? Я попробовал REN 00*.jpg *.jpg , но это не сработало.

2 ответа2

5

Вы должны быть в состоянии начать с:

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "delims=*" %%a IN ('dir /b 00*.jpg') do (
    set file=%%a
    set newfile=!file:~2!
    echo move !file! !newfile!
)
endlocal

Это будет просто повторять команду move . Уберите echo когда закончите тестирование. И имейте в виду, что это может работать не так, как ожидалось, если в именах ваших файлов есть пробелы.

Шаг за шагом, шаг за шагом:

  • setlocal позволяет определенные расширения cmd.exe главным здесь является способность делать замедленное расширение переменных среды внутри for петель.
  • Цикл for запускает команду cmd dir /b 00*.jpg , выполняя одну итерацию для каждого файла (устанавливая %%a в качестве имени файла).
  • Первый set просто сохраняет имя файла в переменную. Вторая операция подстроки начинается с третьего символа.
  • Этот move будет переименовать файл.

Вы можете просмотреть различные команды, введя help команды в командной строке:

setlocal /?
set /?
for /?
set /?
2

Попробуй это:

for %i in (*.jpg) do (
    set filename=%~nxi
    set newname=%filename:~2%
    ren !filename! !newname!
)

Это просто лишит двух символов начала каждого имени файла. Задержка расширения должна быть включена. Возможно, нужно сделать cmd.exe /v:on первом на XP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .