我遇到一个问题,我需要找到驱动器上不包含名为“Arg”的文件夹的所有文件夹。我知道如何使用 DIR 反向执行此操作,即查找具有特定名称的所有子文件夹,但由于我需要相反的操作..我依靠超级用户的智慧来帮助我。
谢谢。
答案1
我认为FOR
/IF NOT EXIST
是你的朋友,在这种情况下......
对于当前文件夹的直接子文件夹...
for /d %A in (*) do @if not exist "%~fA\Arg\*" echo %~fA
或者递归,从当前文件夹向下......
for /d /r %A in (*) do @if not exist "%~fA\Arg\*" echo %~fA
或者以递归方式从给定路径...
for /d /r X:\pathto %A in (*) do @if not exist "%~fA\Arg\*" echo %~fA
反过来...
for /d %A in (*) do @if exist "%~fA\Arg\*" echo %~fA
for /d /r %A in (*) do @if exist "%~fA\Arg\*" echo %~fA
for /d /r X:\pathto %A in (*) do @if exist "%~fA\Arg\*" echo %~fA
在批处理文件中,您需要转义该%
符号......
for /d %%A in (*) do @if exist "%%~fA\Arg\*" echo %%~fA
for /d /r %%A in (*) do @if exist "%%~fA\Arg\*" echo %%~fA
for /d /r X:\pathto %%A in (*) do @if exist "%%~fA\Arg\*" echo %~fA
for /d %%A in (*) do @if not exist "%%~fA\Arg\*" echo %%~fA
for /d /r %%A in (*) do @if not exist "%%~fA\Arg\*" echo %%~fA
for /d /r X:\pathto %%A in (*) do @if not exist "%%~fA\Arg\*" echo %~fA
如果您经常这样做,也许一个宏...
doskey nosubdir=for /d %A in (*) do @if not exist "%~fA\$*\*" echo %~fA
doskey nosubdirrec=for /d /r %A in (*) do @if not exist "%~fA\$*\*" echo %~fA
...
cd /d x:\pathto
nosubdir Arg
nosubdirrec Arg