【问题标题】:Copy specific file from source directory to target directory and sub-directories using batch script使用批处理脚本将特定文件从源目录复制到目标目录和子目录
【发布时间】:2018-10-12 19:57:08
【问题描述】:

我想将特定文件复制到目标目录结构,这意味着所有文件夹和子文件夹和子子文件夹。基本上是一个目录树。

我尝试使用 robocopy,但它只能选择在源上而不是在目标上污染级别

这是我迄今为止尝试过的 robocopy 和简单批处理

:: copies to only one target directory
robocopy "%SOURCE_FILE_DIR_PATH%" "%TARGET_ROOT_FOLDER_PATH%" %FILE_NAME%
:: copies to only 1 sub-level
for /f "delims=" %%a in ('dir /b "%TARGET_ROOT_FOLDER_PATH%"') do (
    for /f "delims=" %%b in ('dir /b "%TARGET_ROOT_FOLDER_PATH%\%%a"') 
    do (
        copy /y "%FILE_NAME%" "%TARGET_ROOT_FOLDER_PATH%\%%a\%%b"    
    )
)

【问题讨论】:

  • 请举例说明使用带有/Lev 选项的RoboCopy 的问题。
  • @Compo,我认为 OP 正试图将单个文件分散到目录树中。我认为 robocopy 做不到。
  • @Compo 正如 jwdonahue 所说,使用 /Lev 的 Robocopy 的问题在于该级别是针对源而不是针对目标的。我需要为目标定义它。

标签: batch-file robocopy


【解决方案1】:

您可以结合使用/D/R 选项来迭代目录树。所以我认为这对你有用。

set "TARGET_ROOT_FOLDER_PATH=C:\folder\subfolder"
set "FILE_NAME=foo.txt"
FOR /D /R "%TARGET_ROOT_FOLDER_PATH%" %%G IN (*) DO COPY /y "%FILE_NAME%" "%%G"

您可以稍微修改您的代码以使用DIR 命令的/AD/S 选项。

for /f "delims=" %%G in ('dir /ad /b /s "%TARGET_ROOT_FOLDER_PATH%"') do copy  "%FILE_NAME%" "%%G"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2019-11-01
    • 2019-12-08
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多