我需要以递归方式浏览一个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月"
任何帮助??
答案 0 :(得分:1)
变化
for /R %CTD% %%f in (*.txt) do (echo %%f
到
for %%f in ("%CTD%\*.txt") do (echo %%f
/r
是递归的。您的目录名似乎包含空格,因此您需要“在引号中包含包含空格的目录名”,并使用%~1
删除子程序中的引号,这将删除封闭的引号。