Вы должны дополнительно использовать tokens=1,2,...
часть опций, которые позволяет цикл for
. Это здесь сделает то, что вы, возможно, хотите:
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims=;" %a in ("%PATH%") ^
do ( ^
echo. %b ^
& echo. %a ^
& echo. %c ^
& echo. %d ^
& echo. %e ^
& echo. %f ^
& echo. %g ^
& echo. %h ^
& echo. %i ^
& echo. %j ^
& echo. %k ^
& echo. ^
& echo. ...and now for some more... ^
& echo. ^
& echo. %a ^| %b ___ %c ... %d ^
& dir "%e" ^
& cd "%f" ^
& dir /tw "%g" ^
& echo. "%h %i %j %k" ^
& cacls "%f")
В этом примере обрабатываются только первые 12 токенов (=каталоги из %path%). Он использует явное перечисление каждого из используемых токенов. Обратите внимание, что имена токенов чувствительны к регистру: %a отличается от %A.
Чтобы избежать путей с пробелами, заключите все %x в кавычки, подобные этому "%i". Я не делал этого здесь, где я только повторяю токены.
Вы также можете сделать что-н. так:
for /f "tokens=1,3,5,7-26* delims=;" %a in ("%PATH%") ^
do ( ^
echo. %c ^
& echo. %b ^
& echo. %a ^
& echo. %d ^
& echo. %e ^
& echo. %f ^
& echo. %g ^
& echo. %h ^
& echo. %i ^
& echo. %j ^
& echo. %k )
Он пропускает токены 2,4,6 и использует небольшое сокращение ("7-26
") для обозначения остальных. Обратите внимание, как на этот раз %c, %b, %a обрабатываются в обратном порядке и как теперь они «означают» разные токены по сравнению с первым примером.
Так что это определенно не то краткое объяснение, которое вы просили. Но, возможно, примеры помогут прояснить ситуацию немного лучше...
person
Kurt Pfeifle
schedule
07.08.2010
for /f
. Смотрите мой собственный ответ ... Я думаю, что он намного ближе к тому, о чем вы просили, чем ответ Марка. Но тогда я не уверен на 100%, что вы просили ;-) - person Kurt Pfeifle   schedule 08.08.2010echo %%h & echo %%i & echo %%j
, чтобы увидеть еще 3 пути к каталогам. - person Kurt Pfeifle   schedule 08.08.2010