for /f не работи в .bat файл, но работи с командния ред в Windows 2003

за /f "tokens=1-7 delims=,: " %a in ('query user ^| find /i "disc"') do logoff %b

Този горен код се използва за излизане от потребители на отдалечен работен плот, където състоянието е „Прекъснато“ в Windows 2003. Ще работи перфектно, когато стартирам в командния ред. Но няма да работи, когато направих .bat файл или .cmd файл в Windows 2003. Така че може би знаете къде бъркам?


person Shreenivas    schedule 26.08.2015    source източник


Отговори (2)


В пакетните файлове знаците за процент, използвани в for заменяемите параметри, трябва да бъдат екранирани

for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do logoff %%b
person MC ND    schedule 27.08.2015
comment
не, не работи, това е 2003 windows сървър. Опитах го. - person Shreenivas; 27.08.2015
comment
@user2503585, Как не става? Какво е наблюдаваното поведение? - person MC ND; 27.08.2015
comment
просто мига cmd подкана и изчезва. - person Shreenivas; 27.08.2015
comment
@user2503585, поставете командата сама в партиден файл, отворете прозорец cmd и изпълнете пакетния файл от него. Какво виждаш? - person MC ND; 27.08.2015
comment
b беше неочаквано в този момент - person Shreenivas; 27.08.2015
comment
работи добре, когато запазя този файл в c:\windows\system32, но не работи, когато го поставя на работния плот - person Shreenivas; 27.08.2015
comment
Благодаря ви много, работи. Проблемът беше път, така че зададох път и получих резултат - person Shreenivas; 27.08.2015

Потребител585,

Да, за да приложите for цикъла в bat/cmd сесия, трябва да поставите променливата с

%%a

като този

for /f %%a in (.\hosts) do quser /server:\\%%a
person Alan Jebakumar    schedule 02.09.2015