2009-08-26 2 views
1

У меня есть отредактированная версия файла конфигурации, специфичного для моей машины. У меня есть тот же файл конфигурации в нескольких разных каталогах в моей папке разработки. Я хочу, чтобы в одном файле bat заменил все экземпляры этого файла моим измененным.Команда DOS для замены всех экземпляров <filename> .config

Так pusedo код: Take C: \ edited.config и скопировать в C: \ Projects \/s, где original.config находится

я хочу, чтобы конечный файл, чтобы иметь имя original.config , не edited.config

поэтому я предполагаю, что мне нужно некоторое сочетание FOR, переименования и копирования или что-то подобное

это легче сделать в Powershell?

Может ли кто-нибудь помочь? Благодаря

ответ

3

Я писал о этом немного назад в http://jamesewelch.com/2008/05/01/how-to-write-a-dos-batch-file-to-loop-through-files/

Я думаю, что ваше решение будет выглядеть что-то подобное (ниже непроверенной, но используется, чтобы показать общую идею)

for /f %%a IN ('dir /b *.config') do copy c:\master.config %%a 

Там, наверное, переключитесь туда на копию, чтобы подавить предупреждения о перезаписывании файлов, но я не помню, что такое переключатель. Это скопирует ваш master.config и перезапишет ваш локальный файл (переменная %% a).

+0

параметр/у подавляют подсказки – shufler

1

Я поражен тем, что эксперты по пакетному файлу DOS делают работу. Поскольку я не один из них, я придерживаюсь подхода, который прагматичен для меня. Это может сработать и для вас.

  1. Получить список папок назначения

    C: Cd \ Dir original.config/s> original.bat

  2. Edit original.bat в вашем любимом текстовом редакторе (мне нравится Notepad ++)

  3. Поиск "original.config" и заменить "" (пустую строку)

  4. Вставить текст «Xcopy C: \ edit.config» в начале каждой строки

  5. Подтвердите результат, чтобы убедиться, что это то, что вы хотите. Если вы не уверены, поставьте «Echo» перед каждой строкой для сухого хода.

  6. Запустить командный файл.

+0

да некоторое колдовство этих ребята придумали удивительно. – ryancrawcour

1
@echo off 
C: 
cd \Projects 
FOR /F "tokens=*" %%G IN ('DIR /B /S original.config') DO xcopy /y c:\edited.config %%G 
Смежные вопросы