.bat - 如何从dir命令中删除“dot”和“dot dot”项

时间:2016-06-07 21:58:23

标签: windows batch-file

我正在编写一个批处理来对当前目录中的所有目录运行命令。

首先,我做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

2 个答案:

答案 0 :(得分:2)

您可以添加/b开关以排除...,只要您不需要dir /a:d提供的其他信息。

要排除其他目录,请使用find /v,如下所示:

dir /a:d /b | find /v "bob" | find /v "alice"

/v开关将输出除给定行之外的所有其他内容。

答案 1 :(得分:0)

显然,您使用for循环(可能是for /f "..." %%x in ('dir ...') do ...)。有一个特殊参数/D可用于目录:

@echo off
setlocal EnableDelayedExpansion
FOR /D %%x IN (*) do (
  ECHO %%x|FINDSTR /ivx "bob joe jane">nul && (
    ECHO do stuff with %%x
  ) || (
    ECHO skipping %%x
  )
)

(只要“排除”文件夹名称中没有空格)

PS:此处无需排除...,因为for /d没有显示它们。