【发布时间】:2020-11-11 13:59:36
【问题描述】:
我在一个名为 upload_filenames.txt 的文件中有一个包含大约 600 个文件名的列表,我想找出它们在树中的位置,该树在 9K 子目录中有大约 .7M 文件。
这个(来自this question)完成了这项工作:
for /F "usebackq delims=" %%i in (upload_filenames.txt) do (
for /F "delims=" %%b in ('dir /B /S /A:-D "%%i"') do (
echo %%~nxb;"%%~fb" >> exists.txt
)
)
现在,在同一个循环中,我还想用找到的所有文件 not 填充第二个文件。 (我可以从两个列表中手动获取,但我更喜欢自动方式。)
到目前为止,我了解到 FOR 循环和 if exist 在成功时返回 errorlevel 0,但只有“未找到文件”而没有错误级别。所以我不能用那些。那么有没有办法批量做到这一点呢?
旁白:我不在乎效率。上面的脚本大约需要 10 个小时才能完成。就这样吧 - 暂时。
Windows 10 或 Server 2008
【问题讨论】:
-
对于找到的文件,单行,
@(For /F Delims^= %%G In ('Dir /B /S /A:-D ^| "%SystemRoot%\System32\findstr.exe" /E /I /L /G:"upload_filenames.txt"') Do @Echo %%~nxG,%%G) 1> "exists.txt"? -
@Compo 不错!还没遇到
findstring。
标签: batch-file windows-10 windows-server-2008