.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