Вопрос Переименование в командной строке


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

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


0
2017-09-20 11:03


происхождения


Вы хотите, чтобы все ведущие 0 были удалены или всего 2? Что делать, если есть только 1 или нет 0? - colithium
просто 00 на старте, если ни один ноль не останется прежним именем файла
Мой обычный метод заключается в создании командного файла с использованием dir / b и excel формул. Есть, вероятно, лучшие способы, но мне нравится мой путь, так как я понимаю это в отличие от пакетного программирования. :)


ответы:


Вы можете начать с:

@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 /?

5
2017-09-20 11:17



Я не могу сказать, что я разбираюсь в пакетном сценарии, но я тестировал, и это, похоже, выполняет эту работу. :) Возможно, вы захотите упомянуть об удалении «эха», чтобы заставить его фактически двигаться, а не просто отображать и помещать его в файл .cmd или .bat, чтобы запустить его для людей, которые никогда не делали такого рода вещь. Я уверен, что таких людей очень много ... :)
Нет проблем, @ Крис, я всегда за конструктивную критику. Обновлено (надеюсь) сделать более полезным.


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

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

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


2
2017-09-20 11:16