У меня есть изображения с именами файлов, например, 0034343.jpg
и я хочу удалить начальные нули, оставив 34343.jpg
в качестве нового имени файла.
Как я могу сделать это в командной строке? Я попробовал REN 00*.jpg *.jpg
, но это не сработало.
У меня есть изображения с именами файлов, например, 0034343.jpg
и я хочу удалить начальные нули, оставив 34343.jpg
в качестве нового имени файла.
Как я могу сделать это в командной строке? Я попробовал REN 00*.jpg *.jpg
, но это не сработало.
Вы должны быть в состоянии начать с:
@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 /?
Попробуй это:
for %i in (*.jpg) do (
set filename=%~nxi
set newname=%filename:~2%
ren !filename! !newname!
)
Это просто лишит двух символов начала каждого имени файла. Задержка расширения должна быть включена. Возможно, нужно сделать cmd.exe /v:on
первом на XP.