将文件复制到同一目录中的多个子目录

时间:2016-11-03 09:05:14

标签: windows command-line

扩展此示例: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 个答案:

答案 0 :(得分: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 $_ }