Windows批处理命令将文件从文件夹列表复制到目标而不遍历子文件夹

时间:2017-07-04 05:14:16

标签: windows batch-file cmd

我需要以递归方式浏览一个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个文本文件以及名为" 7月和#34;的子文件夹。它包含5个测试文件。我希望我的批处理脚本只复制" RFP"中存在的3个文件。文件夹到目的地而不是子文件夹中的5个文件" 7月"

任何帮助??

1 个答案:

答案 0 :(得分:1)

变化

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

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

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