Мне регулярно приходится переименовывать сотни файлов по структуре подпапки. Я создаю пакетный файл, состоящий из всех моих команд переименования, и вручную вставляя это в каждую подпапку для выполнения одной подпапки за раз. Я хотел бы пересмотреть пакетный скрипт так, чтобы он выполнял против всех подпапок одним махом, запускался из родительского каталога только один раз.Запуск пакетного сценария во всех подпапках (рекурсивно)
Мое переименование очень удобно, поэтому мне нужно создать дискретную запись для каждого файла. Например, вот три линии:
REN STWP01_00669087* BCBSRI-01849351*
REN BCBSRI-01849357* 2011-12-19_BCBSRI-01849357*
REN STWP01_00669094* BCBSRI-01849369*
Я экспериментировал с FOR /R command, в том числе пытаясь отдельный пакетный файл, который вызывает мой переименованием пакетный файл (через CALL command). Не повезло.
Я должен предположить, что это просто, но я начинающий новичок, поэтому любая помощь будет оценена по достоинству.
Спасибо!
@Magoo,
Большое спасибо за ваш ответ. Ваш подход будет намного более эффективным, чем мой собственный.
пару вопросов. Пожалуйста, несите меня, поскольку я новичок с командами.
Вот что я сделал: я сохранил ваш код в .BAT-файле («RRename.bat»), изменил свои имена файлов в соответствии с вашими инструкциями и сохранил их в текстовом файле («Filenames.txt»), а затем запустите эту команду из командной строки: {RRename.bat Filenames.txt}.
В результате окна команд подтверждают правильное переименование. И поэтому я удалил команды ECHO и PAUSE и снова запустил. Не повезло. Просто куча окон команд, подтверждающих каталог.
В идеале я хотел бы сохранить это как .BAT-файл и просто поместить его в каталог верхнего уровня вместе с файлом данных, который содержит старые имена и новые имена файлов. Таким образом, двойной щелчок «RRename.bat» будет анализировать содержимое «Filenames.txt» и прокладывать путь через все подпапки, переименовывая везде, где встречаются совпадения. Boom.
С этой целью:
1. Как сделать так, {SET «SourceDir =} указывает на текущий каталог (т.е. каталог, в котором пакетный файл находится) Таким образом, я бы никогда не нужно? измените эту переменную. (Я должен отметить, что я запускаю этот скрипт в сетевом расположении, что требует от меня сопоставления диска, в результате чего каждый раз записывается другая буква диска.)
2. Как я могу скорректировать имя файл данных в самом скрипте? Моя цель - легко реплицируемый процесс, минимизирующий ввод пользователя (за исключением содержимого файла данных).
3. Как я могу остановить появление отдельных окон команд? файлов за раз и не хотят видеть тысячи fo соответствующей команды окна.
Спасибо!
Вы считали PowerShell? Если у вас есть систематический способ переименования, вы можете запрограммировать его в скрипте PowerShell else, если вы можете указать фактическое имя файла и имя, которое оно должно быть переименовано в файл csv, а затем сценарий PowerShell может его достичь. Если вы дадите нам пример того, как вы его переименуете, может быть, кто-то может дать вам и некоторый код. – Junaid
См. [Этот ответ] (http://stackoverflow.com/questions/8397674/windows-batch-file-looping-through-directories-to-process-files/8398621#8398621) для другого, более простого способа сделать этот процесс ... – Aacini