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

Windows 将文件复制到同一目录中的多个子目录,windows,command-line,Windows,Command Line,扩展此示例:我想将一个XML文件复制到同一根文件夹下的多个不同项目目录,因此我尝试了以下方法: for /d %a in (C:\Root\Output\*\bin\x64\Release) do copy /y C:\Root\OtherProject\MyXml.xml %a\ 其中通配符将是我的解决方案目录中的另一个项目名称 当我运行此命令时,没有错误,但XML没有被复制,因此我的问题是,您可以在Windows命令行中使用类似的通配符,还是有更好的方法从命令提示符中处理此类操作?只需拆分

扩展此示例:我想将一个XML文件复制到同一根文件夹下的多个不同项目目录,因此我尝试了以下方法:

for /d %a in (C:\Root\Output\*\bin\x64\Release) do copy /y C:\Root\OtherProject\MyXml.xml %a\
其中通配符将是我的解决方案目录中的另一个项目名称

当我运行此命令时,没有错误,但XML没有被复制,因此我的问题是,您可以在Windows命令行中使用类似的通配符,还是有更好的方法从命令提示符中处理此类操作?

只需拆分它:

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 $_ }

选择了短Powershell选项-效果很好,谢谢。