【问题标题】:Is it possible to copy a file from a directory into a subdirectory in all other directories via a cmd/batch file?是否可以通过 cmd/batch 文件将目录中的文件复制到所有其他目录的子目录中?
【发布时间】:2012-02-20 14:08:18
【问题描述】:

所以剧情是这样的……

我有我的文件夹结构

 - C:\
     - DirectoryA 
         - SubdirA
             - File.xml     
     - DirectoryB    
         - SubdirB     
     - DirectoryC
         - SubdirC
     .
     .
     .

我的问题是, 有没有办法将文件从 SubdirA 复制到所有其他目录的所有子目录中,在批处理/cmd 文件中,而不需要大量的复制语句列表?

【问题讨论】:

  • 请注意:我希望您的目标目录具有遵循特定模式的名称,或者目标的根目录与实际系统驱动器的根目录不同。否则,您可能会将系统目录(或任何其他不相关的目录)与目标混淆。

标签: windows batch-file copy cmd


【解决方案1】:

对不起,关于这个问题有几个不清楚的地方。

起初,我以为您想“将文件从 SubdirA 复制到所有其他目录的所有子目录中”在文件所在的同一级别,即如果 SubdirB 和/或 SubdirC下面会有子目录,文件不会被复制到它们;只是到 SubdirB 和 SubdirC。如果存在的 DirectoryD 下没有另一个子目录,则不会将文件复制到其中。下面的批处理文件就是这样处理的:

@echo off
set "theFile=C:\DirectoryA\SubdirA\File.xml"

for /F "tokens=2 delims=\" %%a in ("%theFile%") do set "originDir=%%a"
cd \
for /d %%a in (*) do (
   if not "%%a" == "%originDir%" (
      pushd %%a
      for /d %%b in (*) do (
         copy "%theFile%" "\%%a\%%b"
      )
      popd
   )
)

但是,您后来说:“目录都将处于同一级别,即直接在 C: 之下”,这与您自己的示例相矛盾!示例中的目录向下两层。

请注意,这一点(目标目录的级别)对于正确编写批处理文件至关重要(以防上面的文件不能解决您的问题)。

【讨论】:

  • cd /d drive:\ 可能是更好的选择,因为您无法确定活动目录是否与目标根目录位于同一驱动器上。
  • 抱歉,我意识到我的问题可能措辞不当。您的第一个解释实际上就是我正在寻找的。​​span>
【解决方案2】:

如果不自己实际编写批处理文件,您可能希望使用“for /d”来遍历目录,并将其放入可以递归调用自身的循环中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2012-04-08
    • 1970-01-01
    • 2017-01-16
    • 2017-03-15
    • 1970-01-01
    相关资源
    最近更新 更多