Batch file 如何限制DIR/S的深度?
我正在搜索文件并将其附加到txt文件中,我想将子目录中的搜索限制为向下一级,而不是多级子目录 我的代码现在看起来像这样Batch file 如何限制DIR/S的深度?,batch-file,Batch File,我正在搜索文件并将其附加到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" > %lo
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\”
预期结果如下所示:
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
有什么想法可以实现吗?您可以使用
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
命令时,它都会打开和关闭文件。目录名不能以空格结尾:\45 Bukit\
Hi Squashman,感谢您的快速回复。我得到的输出如下所示:E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\PP E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ST E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ST,如文章中所述,我们的想法是获得如下输出:E:\Projects\123 BSI\04 Bukit\G Model 12345\02 Models\ST\12345-01-MDL-CC-002.dwgSquashman,请编辑您的代码。第二个而不是“Do echo%%~G”应该是“Do echo%%H”,以获得我需要的输出。编辑完成后,我会将你的答案标记为正确答案!非常感谢你的努力!我记不起新成员是否有按钮。您可以随时建议编辑。我想如果我批准的话,你会因此获得徽章。我必须至少添加6个字符的文本,但你的编辑是对的!再次感谢!
@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"