.bat-файл для переименования нескольких папок
Я пытаюсь написать пакетный скрипт для переименования нескольких папок. Я хотел бы сделать что-то вроде ниже: Переименуйте все папки в папке "Workspace", добавив мое имя в конце имен папок
например, переименовать:
Workspace/RiskFolder
Workspace/PNLFolder
в:
Workspace/RiskFolder_myname
Workspace/PNLFolder_myname
это возможно?
5 ответов
вы можете использовать для цикла через каждый каталог и переименовать его так:
for /D %%f in (C:\path\to\Workspace\*) do rename "%%f" "%%~nxf_myname"
Я тестировал это на Windows 7, но он должен работать, по крайней мере, как с Windows XP.
что это делает: для каждого каталога в пути (в скобках) назначьте имя каталога переменной %%f
, затем переименуйте каталог %%f
на имя в формате, который вы хотите (с вашим именем прилагается). %%f
содержит полный путь, который подходит для первый аргумент rename
команда, но для второго аргумента нам нужно только расширение filename+, таким образом, модификатор ~nx, добавленный к нашему имени переменной.
кстати, при использовании этого for
цикл в командной строке (а не часть пакетного файла) вы хотите использовать только один % вместо %% Для имени переменной. Е. Г. for %f in...
вместо выше.
см. следующие ссылки от Microsoft для получения дополнительной информации подробности:
вы можете использовать следующую команду в пакетный файл:-
for /F "usebackq tokens=*" %%a in (`dir /ad /b %1`) do ren %1\%%a %%a%2
это команда DOS 'for', которая перебирает заданный набор элементов и для каждого элемента в наборе выполняет заданное действие. Для данного требования необходимо сделать следующее: -
1) принять имя папки, которая содержит подпапки для переименования (в вашем примере это рабочая область).
2) Примите строку, которая будет добавлена к концу(в вашем примере это ваш имя.)
3) перечислите имена подпапок в папке.
4) переименовать, добавив строку к исходному имени.
давайте посмотрим, как это для команды выполняет это. Формат команды " for " используется здесь: -
for /F ["options"] %variable IN (`command`) do command [command-parameters]
команда здесь предполагает, что имя и строка родительского каталога, которые необходимо добавить, передаются в качестве параметров командной строки. Они представлены %1 и %2 (первый и второй параметры).
в позвольте нам выдать команду dos для оценки, нам нужно использовать параметр /F. Строка опции: -
"usebackq tokens=*"
- usebackq указывает, что строка backquouted-это команда для оценки.(Обратите внимание, что команда dir заключена в backquotes (`))
- tokens= * означает рассматривать каждую строку как один токен и передавать команде
список каталогов в Родительском каталоге, мы используем команда: -
dir /ad /b %1
- / ad отображает только каталоги (игнорирует файлы)
- / b отображает его в голом формате, т. е. возвращаются только имена, а дата, время и другая информация-нет.
- %1-это переменная командной строки, ссылающаяся на родительский каталог.
- %%a-это переменная, которая получает имя подкаталога на каждой итерации. Двойной процентный символ требуется, так как мы используем его в пакетном файле, в противном случае требуется только один (например %a)
наконец, мы указываем действие, которое будет выполнено:-
ren %1\%%a %%a%2
- %1\%%a создает абсолютный путь к подкаталогу
- %%a%2 Добавьте второй параметр командной строки к исходному имени
для получения дополнительной информации о команде for введите в командной строке следующее: -
for /?
для другого примера использования см. петлевые петли: путь DOS
нет необходимости в пакетном файле. Это будет работать из командной строки
for /d %D in ("Workspace\*") do ren "%D" "%~nxD_myName"
Если вы используете пакетный файл, затем %D
должны стать %%D
Если нет необходимости выполнять переименование папки/файла с помощью пакетного файла, вы также можете использовать утилиту массового переименования для Windows. Проверьте это: http://www.bulkrenameutility.co.uk/Download.php
For /D %%f in (*) do rename "%%f" "%%fWhatEverNameYouLike"
pause
пауза, чтобы увидеть его! Сделать команду cmd и положил его в папку, которую вы хотите переименовать все вложенные папки! Они будут переименовывать в каждое имя папки, плюс WhatEverNameYouLike