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

for /f "tokens=1-7 delims=,: " %a in ('запросить пользователя ^| найти /i "диск"') выйти из системы %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
нет, это не работает, это сервер Windows 2003. Я пробовал. - person Shreenivas; 27.08.2015
comment
@user2503585, как это не работает? Каково наблюдаемое поведение? - person MC ND; 27.08.2015
comment
просто мигает приглашение cmd и исчезает. - person Shreenivas; 27.08.2015
comment
@user2503585 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