我正在搜索文件并将其附加到txt文件,我想将子目录中的搜索限制为向下一级而不是多层子目录。
此刻我的代码看起来像这样。
set ProjectNo=12345
set ProjectLocation=E:\Projects\123 BSI\45 Bukit \G Model 12345\02 Models
set location=E:\Scripts
dir /S/B "%ProjectLocation%\\..\\%ProjectNo%-*-MDL-??-???.dwg" > %location%\%ProjectNo%-ML-%DATE%.txt
列表很长,但部分输出如下:
E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\GE\12345-30-MDL-GE-003.dwg E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ME\12345-25-MDL-ME-018.dwg E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ME\12345-30-MDL-ME-017.dwg E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ME\12345-25-MDL-ME-018\Details\12345-25-MDL-ME-018.dwg E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ME\_Superseded\12345-120-MDL-ME-018.dwg E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\PP\12345-25-MDL-PP-001.dwg E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ST\12345-01-MDL-ST-001.dwg E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ST\12345-01-MDL-ST-002.dwg
任何想法都是只列出"E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\"
的一个深度
预期结果如下所示:
E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\GE\12345-30-MDL-GG-003.dwg
E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ME\12345-25-MDL-KK-018.dwg
E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ME\12345-30-MDL-MM-017.dwg
E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\PP\12345-25-MDL-PP-001.dwg
E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ST\12345-01-MDL-SS-001.dwg
E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ST\12345-01-MDL-CC-002.dwg
任何想法如何实现这一目标?
答案 0 :(得分:1)
您可以使用FOR /D
命令在源目录的根目录中列出所有目录。然后,使用另一个FOR
命令在源的单个子目录中列出所需的文件。
@echo off
set "ProjectNo=12345"
set "ProjectLocation=E:\Projects\123 BSI\45 Bukit\G Model 12345\02 Models"
set "location=E:\Scripts"
(FOR /D %%G IN ("%ProjectLocation%\*") DO (
FOR %%H IN ("%%~G\%ProjectNo%-*-MDL-??-???.dwg") DO echo %%H
)
)>"%location%\%ProjectNo%-ML-%DATE%.txt"
我所做的所有代码更改都是您应遵循的最佳实践。报价是可选的,但如果路径中有空格,则需要报价。
在这种情况下,使用重定向将输出文件打开一次以进行写入。如果您在FOR
命令中进行了重定向,则每次执行ECHO
命令时,它将打开和关闭文件。