【问题标题】:windows batch command to copy files from a list of folders to a destination without traversing through the subfolderswindows批处理命令将文件从文件夹列表复制到目标而不遍历子文件夹
【发布时间】:2017-12-07 10:12:21
【问题描述】:

我需要递归遍历windows目录列表并将这些目录中的txt文件复制到目的地。我正在使用以下代码:

@echo off

set TESTDIRS=RFP,New Audit
set TD=C:\Users\Audit

for %%d in (%TESTDIRS%) do call :process_testdir %%d
goto :eof

:process_testdir
set CTD=%TD%\%1
echo CTD: %CTD%
    REM Echos the expected path

for /R %CTD% %%f in (*.txt) do (echo %%f
 copy "%%f" "C:\Users\Audit\ImportantDocs)
    REM Echos as expected

goto :eof

我面临的问题:此批处理脚本遍历父文件夹中存在的所有子文件夹并将 txt 文件复制到目标,这不是我想要的。如果我指定文件夹名称,我想要文本仅将该特定文件夹中的文件复制到目标位置,而不是其子文件夹中存在的文件。
例如:名为“RFP”的文件夹包含 3 个文本文件和一个名为“July”的子文件夹,其中包含 5 个测试文件。我希望我的批处理脚本仅将“RFP”文件夹中的 3 个文件复制到目标而不是子文件夹“July”中的 5 个文件

有什么帮助吗??

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

    改变

    for /R %CTD% %%f in (*.txt) do (echo %%f
    

    for %%f in ("%CTD%\*.txt") do (echo %%f
    

    /r 是递归的。您的目录名似乎包含空格,因此您需要“将目录名包括在引号中的空格括起来”,并使用 %~1 删除子例程中的引号,这会删除封闭的引号。

    【讨论】:

    • 谢谢。这对我有用。对 Windows 批处理脚本非常陌生,我最终会问一些看起来很愚蠢的问题。:(
    猜你喜欢
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多