Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] ошибка синтаксиса cmd скрипта

Ответить
Настройки темы
CMD/BAT - [решено] ошибка синтаксиса cmd скрипта
Den Den вне форума

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


доброе утро!

проблема такая, нужно прочитать из входного файла 1.txt с вот таким содержимым данные после -

COMPN-computer1
USER-den
PASSWORD-1234
CMD-ipconfig
ARGS- >c:\pc\2.txt
WAIT-pause

был написан такой код
for /f "tokens=1-8 delims=-" %a in (1.txt) do set %a=%b
psexec.exe \\%compn% -u %user% -p %password% %cmd% %args%&%wait%

,но не заработал.
проблема в том, что если ручками вводить в CMD строку по одной строке: примерно вот так

c:\pc>for /f "tokens=1-8 delims=-" %a in (1.txt) do set %a=%b

c:\pc>set COMPN=computer1

c:\pc>set USER=den

c:\pc>set PASSWORD=1234

c:\pc>set CMD=ipconfig

c:\pc>set ARGS= >c:\pc\2.txt

c:\pc>set WAIT=pause


c:\pc>psexec.exe \\%compn% -u %user% -p %password% %cmd% %args%&%wait%

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

ipconfig exited with error code 0.
Press any key to continue . . .

все работает, а вместе никак - т.е на выходе пустой файл 2.txt
помогите, как оно должно быть? команда не обязательно ipconfig любая другая с параметром %args% тоже подойдет

спасибо заранее
всем хорошего дня!

Отправлено: 23:08, 29-03-2012

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Den,
Код: Выделить весь код
for /f "tokens=1,2 delims=-" %%a in (1.txt) do set "%%a=%%b"

Отправлено: 07:04, 30-03-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


c:\pc>1.cmd

c:\pc>for /F "tokens=1,2 delims=-" %a in (1.txt) do set %a=%b

c:\pc>set COMPN=Computer1

c:\pc>set USER=den

c:\pc>set PASSWORD=1234

c:\pc>set CMD=ipconfig

c:\pc>set ARGS= >c:\pc\2.txt

c:\pc>set WAIT=pause

c:\pc>psexec.exe \\Magic -u den -p 1234 ipconfig 1>c:\pc\2.txt & pause

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

ipconfig exited with error code 0.
Press any key to continue . . .

ничего не изменилось !!!
откуда перед >c:\pc\2.txt & pause
взялась единица????
поэтому он и не пишет в 2.txt

спасибо

Отправлено: 11:54, 30-03-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Den:
откуда перед >c:\pc\2.txt & pause
взялась единица???? »
Командный процессор добавил номер канала (StdOut) в вывод. Это нормально, и ошибкой не является. Более того, когда Вы пишете:
Код: Выделить весь код
echo bla-bla-bla>some.txt
на самом деле сие означает именно:
Код: Выделить весь код
1>some.txt echo bla-bla-bla

Отправлено: 12:55, 30-03-2012 | #4

Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


так почему же .cmd файл не работает???
где конкретно ошибка ? как написать чтобы все заработало как надо???
спасибо

Отправлено: 14:29, 30-03-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Den, я не вижу приведённого Вами кода пакетного файла. Только отдельные команды или вывод командного процессора.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:50, 30-03-2012 | #6

Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


поставлю вопрос по другому как из этих двух строчек

for /f "tokens=1-8 delims=-" %a in (1.txt) do set %a=%b
psexec.exe \\%compn% -u %user% -p %password% %cmd% %args%&%wait%

сделать .cmd файл
или вообще все переделать - неважно - главное прочитать из 1.txt информацию и внести ее в psexec.exe и получить на выходе текстовый файл с результатом выполненной команды с параметром необязательно ipconfig>c:\pc\2.txt
видимо я совсем косоязычно выражаю мысли

спасибо

Отправлено: 15:51, 30-03-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Den:
видимо я совсем косоязычно выражаю мысли »
Обычно достаточно научиться разделять текст на предложения, начинать их с заглавных букв и пользоваться знаками препинания для придания тексту осмысленности.


Болванка пакетного файла «Some.cmd»:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFileIn=%~1

if defined sFileIn (
	if exist "%sFileIn%" (
		for /f "usebackq tokens=1,2 delims==" %%i in ("%sFileIn%") do set %%i=%%j
		
		psexec.exe \\!COMPN! -u !USER! -p !PASSWORD! "!CMD!" >"!OUTFILE!"
	)
)

endlocal
exit /b 0


Инициализационный файл «Some.ini»:
Код: Выделить весь код
COMPN=computer1
USER=den
PASSWORD=1234
CMD=ipconfig.exe
OUTFILE=c:\pc\2.txt
Вызов:
Код: Выделить весь код
Some.cmd Some.ini
P.S. Если вызов «PsExec.exe» будет осуществляться в контексте текущего пользователя — указание пары «Имя»/«Пароль» не является обязательным.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:22, 30-03-2012 | #8

Den Den вне форума Автор темы

Аватара для Den

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Пробую!
Огромное спасибо за страрание и терпение!

Отправлено: 17:19, 30-03-2012 | #9


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата Den:
был написан такой код
for /f "tokens=1-8 delims=-" %a in (1.txt) do set %a=%b
psexec.exe \\%compn% -u %user% -p %password% %cmd% %args%&%wait%
psexec.exe \\%compn% -u %user% -p %password% %cmd% %args%&%wait%
,но не заработал.
проблема в том, что если ручками вводить в CMD строку по одной строке: примерно вот так
c:\pc>for /f "tokens=1-8 delims=-" %a in (1.txt) do set %a=%b
{ . . . }
все работает, а вместе никак »
Цитата for/?:
В пакетных файлах для команды FOR используется запись %%переменная вместо %переменная.
вам же был дан код http://forum.oszone.net/post-1888833.html#post1888833 :

for /f "tokens=1,2 delims=:" %%a in (text.txt) do set %%a=%%b

Отправлено: 18:23, 30-03-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] ошибка синтаксиса cmd скрипта

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - [решено] Ошибка при запуске скрипта AutoIt 00002010 AutoIt 12 06-03-2010 14:23
CMD/BAT - [решено] Введение настроек прокси в IE6 из CMD-скрипта DNK_Inc Скриптовые языки администрирования Windows 2 16-04-2009 18:23
[решено] Ошибка синтаксиса при входе на сайт Grub Хочу все знать 2 19-12-2006 07:32
ошибка синтаксиса комманндной строки permidon Microsoft Windows 95/98/Me (архив) 6 03-12-2004 06:22
Ошибка при работе скрипта Rudy Вебмастеру 18 13-10-2004 06:52




 
Переход