我正在编写批处理以在当前目录中的所有目录上运行命令。.bat - 如何从目录命令中删除“dot”和“dot dot”项目
要开始,我做dir /A:D
,但即使在.
和..
目录上,我不想运行我的命令。
我知道我可以写
IF NOT %%x EQU "."
IF NOT %%x EQU ".."
排除它们但是,有没有更通用的方法?像:
set EXCLUDED=".","..","bob"
set FOLDERS=dir /A:D
rem for each in EXCLUDED, remove from FOLDERS
rem run my command(s) on FOLDERS
是否有解决方案,就像我的问题一样,您可以提供一个包含要排除的项目列表的VAR?这将是最通用的解决方案。 – Adrian
@Adrian您可以使用'findstr/v'来处理不符合正则表达式的行,并将变量设置为要排除的正则表达式。 'findstr'语法将空格视为多个搜索项的分隔符。例如,'set'excluded = intel link logitech“'then'dir/b/a:d |” findstr/i/v“%excluded%”将匹配除Intel,Links或Logitech以外的所有目录(不区分大小写)。或者如果您打算采取的行动可以通过'robocopy'处理,您可以使用'robocopy'的'/ XD'开关来排除您指定的目录。或者如果'xcopy',你可以使用它的'/ exclude'开关。 – rojo
@rojo ok听起来像我想要的。一旦我编辑它并粘贴你在评论部分写的内容,我会接受你的回答。 – Adrian