在子文件夹中搜索请求的文件并复制到目标



我试图将file_list.txt中列出的文件从源位置复制到目标文件夹,源文件夹有子文件夹。我的批处理应该能够搜索源子文件夹中的文件并复制到目标文件夹。复制扩展名为.exe的所有文件也是如此。我的代码有什么问题。我想,我错过了搜索子文件夹数据。不知道命令是什么。请帮助。

@Echo Off
SETLOCAL ENABLEDELAYEDEXPANSION
@color 0a
cls
set "dest=D:destination"
set /p source=Select source path:

for /R %%f in (%source%/*.exe) do copy %%f "%dest%"
echo Copy requested files
for /f %%f in (file_list.txt) do (
for /f "tokens=*" %%F IN ('dir /S /B /A:-D "%source%/%%f"') Do (
copy "%%F" "%dest%%USERNAME%"      
)
)
pause
ENDLOCAL

我看不出你发布的代码有什么明显的错误,尽管有错误的可能性。您没有提供足够的信息,包括当前目录、文本文件的内容、如何调用脚本或任何调试信息。

下面的代码版本要求将文件清单文本文件放入第5行的变量定义中。我假设批处理文件位于与文件列表相同的位置,因此使用%~dp0。如果它在当前目录中,则将其替换为%CD%,如果两者都不是,则显然要替换为完全限定的绝对路径。

接下来,我使用一些验证来尝试确保源、目标和用户输入存在。输入位置将变成当前目录。

然后运行您提供的命令,然后将当前目录返回到原始位置。

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Color 0A
Set "listdir=%~dp0filelist.txt"
Set "dest=D:destination"
If Not Exist "%listdir%" GoTo :EOF
If Not Exist "%dest%" GoTo :EOF
:Ask
ClS
Set "source="
Set /P "source=Select source path: "
If Not Defined source GoTo Ask
PushD "%source:"=%" 2> NUL || GoTo Ask
For /R %%G In (*.exe) Do Copy /Y "%%G" "%dest%"
Echo Copy requested files
For /F "UseBackQ EOL=? Delims=" %%G In ("%listdir%"
) Do For /F "Delims=" %%H In ('Dir "%%~nxG" /S /B /A:-D 2^> NUL'
) Do Copy /Y "%%H" "%dest%%UserName%"
PopD
Pause

请随意尝试代码,如果它仍然不能按预期工作,请提供一些适当的调试信息。

最新更新