У меня есть папка с 120 .cs
файлами.
Что мне нужно сделать, это добавить «DO» к каждому имени файла перед расширением.
Вот что я придумал:
ren *.cs *. //this removes all file extensions
ren *.* *DO.cs // this should rename all the files and add the suffixes
Теперь это работает в основном. Но не для некоторых файлов.
Сначала я думал, что это просто файлы, начинающиеся с Do
Но ... хорошо, вот как это оказалось:
(Остальное, что не на экране печати, в порядке)
Теперь это не серьезная проблема; Я просто хотел понять, почему он это сделал ...
Посмотрев на этот вывод, я подумал, что он не может найти файлы, потому что вторая команда состоит из . для переименования; но поскольку ни один из файлов в папке не имеет расширения на момент переименования; это не может быть ..
Спасибо
windows
cmd.exe
batch-rename
Мастер Азазель
источник
источник
Ответы:
Как говорили другие, он заключается в способе
ren
интерпретации подстановочных знаков, поэтому он не может найти файлы, содержащие точки*.*
во второй команде, потому что:Artikelnummer.cs > Artikelnummer
.
(которых нет!):ren *.*
ren
использование*
для ссылки на имя файла, поэтому, когда вы ищете*.*
(любое имя, любое расширение), вы используете,*
чтобы ссылаться на имя файла и расширение одновременно, что вводит в заблуждениеren
команду!Итак, вывод, единственная проблема была
*.*
, замените его на*
:Однако, если вы хотите переименовать, запустив одну строку кода:
Из командной строки запустите:
Или сохраните и запустите этот скрипт:
И не забудьте поменять
%FilesLocation%
его с реальной ценностью.источник
.DO.cs?
что мне нужно,xyDO.cs
ren
команда внутриfor
цикла. Но если вы имеете в виду простоren
команду, я обновил весь мой ответ.Вам нужна команда for. С макушки головы это выглядит примерно так:
Это не работает для имен файлов, которые содержат более одной точки.
источник
FOR
имеет режим для циклического просмотра файлов (также рекурсивный), нетdir /b
необходимости ( https://ss64.com/nt/for2.html ). Вам нужно передать глобус файла или список(*.cs, \path\*.txt,...)
Командная строка
В командном файле (использовать
%%
)Примечания:
%_
является допустимой переменной@
это не сбрасывать команды переименования для каждого имени файла%~n_
возвращает только часть имени из%_
(удаляет последнее расширение)Добавьте
/R "c:\directory"
для рекурсивного анализа каталога ( https://ss64.com/nt/for_r.html ). Используйте с осторожностью - нет отменыДвойные кавычки
"
важны, потому что пути и имена файлов могут включать пробелыНе будет работать должным образом с несколькими расширениями, потому что в Windows только последний токен считается расширением. Т.е. test.tar.gz станет test.tarDO.gz
Я предлагаю вам сначала попробовать с
FOR %_ IN (*.cs) DO echo REN "%_" "%~n_DO.*"
сухой пробойисточник