List 用于列出文件夹但排除特定文件夹的批处理脚本
我希望此脚本列出文件夹名称中包含“已删除”的所有文件夹,但如果它们位于名为“完成”的文件夹中,则不列出 例如:如果文件夹位于List 用于列出文件夹但排除特定文件夹的批处理脚本,list,batch-file,directory,dir,List,Batch File,Directory,Dir,我希望此脚本列出文件夹名称中包含“已删除”的所有文件夹,但如果它们位于名为“完成”的文件夹中,则不列出 例如:如果文件夹位于C:\temp中,并且如果文件夹位于C:\temp\random\u folder\u name中,请列出该文件夹,但如果文件夹位于C:\temp\done中,则不列出该文件夹 dir /s "C:\temp" | findstr "\deleted" 简短的故事,排除所有名为“完成”的文件夹及其内容 dir /s "C:\temp" | findstr "\delete
C:\temp
中,并且如果文件夹位于C:\temp\random\u folder\u name
中,请列出该文件夹,但如果文件夹位于C:\temp\done
中,则不列出该文件夹
dir /s "C:\temp" | findstr "\deleted"
简短的故事,排除所有名为“完成”的文件夹及其内容
dir /s "C:\temp" | findstr "\deleted"|findstr /i /v "\temp\done\"
应该符合要求
- 或者,如果您想在路径上省略任何已作为目录“完成”的名称,请删除
部分\temp
- 你就快到了
Findstr/v返回不包含字符串的所有行
dir/ad将仅显示目录(Atrribut=Directory)
在许多情况下:
dir /b /s /aa <path>
dir/b/s/aa
我会成功的/b用于不太详细的输出,/s用于递归(子目录),而/aa仅用于准备归档的文件。这通常是正常创建的文件的情况-默认为打开 啊-但这也会排除名为
done*
的目录和文件,而不仅仅是'done'
的/ad消除了文件名-我的错误。尽管如此,如果在\done`之后没有\done',这也将匹配所有\done。OTOH,使用\done`将仅豁免c:\were\all\done\here等
目录,但不会消除以\done
结尾的目录,如c:\were\not\all\done
。为此,您必须添加一个额外的|findstr/i/e/v“\done”
,以排除文件夹名(仅使用文件名)dir/a-d。(请参阅dir/?)如果“done”文件夹位于该特定路径中,则可以完美地完成工作。我希望它排除任何名为“done”的文件夹,无论它位于何处,在本例中是C:\Temp。对不起,如果我不清楚这一点。
dir /b /s /aa <path>