2015-05-13 2 views
1

У меня есть список файлов, как это: icone1.gif icone2.gif icone1.gif icone11.gif icone12.gif icone13.gif icone14.gif icone15.gifКак удалить один символ из имени файла списка файлов в папке с помощью команды DOS?

Я хочу удалить «е» от него таким образом, они будут icon1.gif, icon2.gif и так далее ...

Я попытался это из командной строки DOS:

ren icone*.gif icon*.gif 

Не работает.

+2

Обязательный «Вы имели в виду пакет или вы буквально используете MS-DOS, потому что это не одно и то же» комментарий. – SomethingDark

+0

Я не думаю, что есть хороший способ сделать это из командной строки DOS. Если у ОС есть powershell, есть надежда. В противном случае лучшим вариантом может быть создание командного файла, который явно переименовывает каждый файл. – Gus

+0

Причина, по которой вы не работаете, заключается в том, что вы говорите для каждого файла, начиная с icone, переименовывая его в значок и остаток файла filename.gif (который включает в себя e). Это боль, и я не думаю, что вы можете обойти его с помощью только одна строка –

ответ

1

Создайте пакетный файл в папке, набрав «блокнот GO.BAT» в командной строке и нажать ввод и падение это в том сохранить и выйти блокнот:

for %%i in ("*.gif") do (set fname=%%i) & call :rename 
goto :eof 
:rename 
::Cuts off 1st five chars, then appends Icon and the remaining chars 
ren "%fname%" "Icon%fname:~5%" 
goto :eof 

Дважды щелкните пакетный файл в окнах или из командной строки введите go и нажмите enter

+0

ничего себе, что сделал трюк, работал как шарм – gangt

1

См. How does the Windows RENAME (REN) command interpret wildcards? для правил, которые могут объяснить, почему ваша команда не работает.

Предполагая, что все ваши имена файлов имеют цифру после «icone» (на самом деле, только забота о том, чтобы у вас никогда не было другого «e» после «icone»), тогда из командной строки будет работать следующий один лайнер.

for /f "tokens=1* delims=eE" %A in ('dir /b icone*.gif') do @ren "%Ae%B" "%A%B" 

Двойной процент процентов, если вы поместите команду в пакетный скрипт.

Для действительно простого и надежного решения используйте мой JREN.BAT regular expression renaming utility, чистый скрипт (гибридный JScript/пакет), который запускается изначально на любой машине Windows с XP и далее.

jren "^(icon)e(.*\.jpg)" "$1$2" /i 
+0

Ухоженный, он работает. Думаю, я никогда не смогу понять синтаксис DOS – gangt

Смежные вопросы