仅将文件复制到第一个子目录

时间:2018-07-09 09:11:14

标签: windows batch-file copy subdirectory

我想将文件复制到文件夹的第一个子目录。

示例:

\---main_folder
    |
    \---subfolder *(copy here)*
        |
        \---sub_subfolder *(do NOT copy here)*

我知道将文件复制到目录及其子目录非常容易,例如:

for /r "G:\main_folder" %%i in (.) do @copy "G:\abc.txt" "%%i"

但是此代码将文件复制到main_folder的所有子目录中,而我只希望复制到subfolder (请参见我的基本示例)

我检查了forfor /?上的帮助,但找不到答案。

我想念什么吗?

2 个答案:

答案 0 :(得分:1)

由于您正在使用for /R,因此文件将被复制到树中的每个目录中。

使用for /D来遍历某个层次结构级别,如以下示例所示:

for /D %%I in ("G:\main_folder\*") do copy "G:\abc.txt" "%%~I"

这当然会将文件复制到G:\main_folder的每个直接子目录中。

答案 1 :(得分:0)

因为您的问题是'I want to copy a file to the first subdirectory of a folder.',而不是'I want to copy a file to every top level subdirectory of a folder.'这是您的评论,所以您同意有效。。您需要首先确定first的组成。

此示例使用first作为名称排序顺序,按名称排序顺序(按字母顺序排列)

@For /F Delims^=^ EOL^= %%A In ('Dir /B/AD/ON "G:\main_folder"') Do @Copy /Y "G:\abc.txt" "%%A" & GoTo :EOF

编辑
,因为您现在已经说明问题参数是错误的,没有误解,即'I want to copy a file to every top level subdirectory of a folder',因此最初提供的注释显示正确的方法:

@For /D %%A In ("G:\main_folder\*") Do @If Exist "G:\abc.txt" Copy /Y "G:\abc.txt" "%%A" >Nul 2>&1

或者,应该更快一些,首先执行If Exist

@If Exist "G:\abc.txt" For /D %%A In ("G:\main_folder\*") Do @Copy /Y "G:\abc.txt" "%%A" >Nul 2>&1