2016-11-03 6 views
1

расширяющейся на этом примере: Copying a file to multiple folders in the same directory Я хочу, чтобы скопировать файл XML в нескольких каталогах проекта под одной и той же корневой папке, поэтому я попытался это:Копирование файла с несколькими подкаталогами в том же каталоге

for /d %a in (C:\Root\Output\*\bin\x64\Release) do copy /y C:\Root\OtherProject\MyXml.xml %a\ 

Где подстановочный знак будет другим именем проекта в моем каталоге решений.

Когда я запускаю эту команду, нет ошибки, но XML не копируется, поэтому мой вопрос заключается в том, можете ли вы использовать такие подстановочные знаки, как это в командной строке Windows, или, альтернативно, есть лучший способ справиться с такой операцией из в командной строке?

ответ

1

Просто разделить его:

FOR /D %1 IN (c:\root\output\*) DO (
    COPY /Y c:\root\otherproject\myxml.xml %1\bin\x64\release 
) 

Очевидно, что это работает, если должны быть включены все подкаталоги c:\root\output (у них есть подкаталог bin\x64\release.) Если это не так, то вы должны включить дополнительную проверку:

FOR /D %1 IN (c:\root\output\*) DO (
    IF EXIST "%1\bin\x64\release" (
     COPY /Y c:\root\otherproject\myxml.xml "%1\bin\x64\release" 
    ) 
) 

конечно, вы можете почувствовать это на много кода для такой простой задачи, а затем, возможно, пришло время, чтобы переключиться на PowerShell, Get-ChildItem поддерживает групповые символы используются так, как вы хотите:

Get-ChildItem c:\root\output\*\bin\x64\release ` 
    | ForEach-Object -Process ` 
     { Copy-Item -Force c:\root\otherproject\myxml.xml $_ } 

Если вы любите короткий синтаксис:

gci c:\root\output\*\bin\x64\release | % { cp -Force c:\root\otherproject\myxml.xml $_ } 
+1

Пошел за короткий вариант Powershell - отлично работает, спасибо. – JNH

Смежные вопросы