Список папок в CMD, который не имеет определенной подпапки

631
Aryat Mapreh

У меня есть проблема, где мне нужно найти все папки на диске, который не имеет папки с именем «Arg» .. Я знаю, как сделать это в обратном порядке, используя DIR, то есть, чтобы найти все подпапки с определенным именем, но поскольку мне нужно противоположное этому .. Я полагаюсь на суперпользовательскую мудрость, чтобы помочь Мне.

Благодарю.

0

2 ответа на вопрос

0
Gombai Sándor

enter image description here

If you can run recursive dir and redirect its output to a file, then you are halfway through. The rest can be done with the find command that looks for lines that contain or do not contain the given string.

Here I listed my directories into mydirs.lst. First, I looked for directories containing the string "Links", then I did the opposite by using the /v switch.

Можете ли вы сделать что-то вроде сравнения в списке, чтобы узнать, какие папки у него есть, а какие нет? Aryat Mapreh 8 лет назад 0
0
jimbobmcgee

Я думаю 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