2013-03-28 3 views

ответ

3

Если вы просто хотите получить список подкаталогов текущего каталога:

dir /ad /b 

Если вы находитесь в другом каталоге, вы можете просто сделать:

dir c:\temp /ad /b 

/ad означает список всех элементы с атрибутом «каталог» и /b - это голый формат

Update:

Как Билл прокомментировал ниже, вы можете перебрать выход Dir ЦМДА и установить переменное окружение. Ловушка здесь заключается в том, что если есть более одной подпапки, вы не будете знать, какой из них будет «последним». Вот пример, который заказывает каталоги по имени (/ о) и установив переменную окружения MY_ENV_VAR на имя последней вложенной:

for /f "delims=" %%a in ('dir "c:\temp" /on /ad /b') do @set MY_ENV_VAR=%%a 

Как и в сторону, если вы собираетесь делать гораздо больше программирования сценариев , вы можете потратить некоторое время на некоторые основы PowerShell, что дает вам гораздо более программный контроль.

Get-ChildItem | where {$_.PSIsContainer} 

Я нахожу, что пакетные скрипты будут разочаровывать в работе через некоторое время.

+0

я могу получить имя, будет ли способ хранить это в переменной? – emochoco

+2

Да. - для/f "delims =" %% a in ('dir "c: \ temp"/ad/b') do @set DIRNAME = %% a - Примечания: 1) Если имеется более одного имени каталога , только последний будет установлен в переменной DIRNAME. 2) При вводе в командной строке cmd.exe используйте% a вместо %% a (два% для использования в пакетном скрипте, один% при вводе в командной строке). –

+0

Спасибо, это работает! – emochoco

2

Попробуйте это:

for /d /r "C:\temp" %%i in (*.*) do echo %%~i 
Смежные вопросы