Что нового

Передача информации из Autoit в cmd

lorents

Новичок
Сообщения
82
Репутация
1
Добрый вечер!
Подскажите, пожалуйста, как можно передать данные из Autoit в окно cmd? скрипт я запускаю из cmd.
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
lorents
Скомпилируй это
Код:
#AutoIt3Wrapper_OutFile=Program.exe
ConsoleWrite("Этот текст будет записан в консоль")


с помощью AutoIt3Wrapper и запусти cmd-файл с таким содержанием
Код:
Program.exe>File.txt

Открой File.txt и посмотри что там будет.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
AZJIO
А если будет несколько окон cmd? Вот тут то и проблема. Передаст в первое попавшееся...
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
Medic84
Не понял при чём тут окна? Пишет не в окно, а в поток, а какое окно будет читать этот поток в том и будут данные.

lorents
Ещё полезно использовать Exit 0 при успехе или Exit 1 в случае ошибки, при неправильно переданных данных скрипту. При этом он возвращает код выхода, который получает %ERRORLEVEL% в cmd-файле.


Добавлено:
Сообщение автоматически объединено:

lorents
Вот ещё проверь такое
Код:
#AutoIt3Wrapper_OutFile=Program.exe
#AutoIt3Wrapper_Change2CUI=Y
If $CmdLine[0]>0 Then
	Switch $CmdLine[1]
		Case '/h', '-h'
			ConsoleWrite("‡¤Ґбм Ўл«  бЇа ўЄ ")
		Case '/a', '-a'
			ConsoleWrite("ќв®в ⥪б⠡㤥⠧ ЇЁб ­ ў Є®­б®«м")
	EndSwitch
EndIf


Код:
"%~dp0Program.exe" -h
"%~dp0Program.exe" -a
pause
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
lorents
Мне самому интересно, я раньше не передавал данные в консоль. Вот ещё с возвратом кода ошибки.

Код:
#AutoIt3Wrapper_OutFile=Program.exe
#AutoIt3Wrapper_Change2CUI=Y
If $CmdLine[0]>0 Then
	Switch $CmdLine[1]
		Case '/h', '-h'
			ConsoleWrite("‡¤Ґбм Ўл«  бЇа ўЄ ")
		Case '/a', '-a'
			ConsoleWrite("ќв®в ⥪б⠡㤥⠧ ЇЁб ­ ў Є®­б®«м")
		Case Else
			Exit 1
	EndSwitch
Else
	Exit 1
EndIf
Exit 0


CMD-файл
Код:
@echo off
"%~dp0Program.exe" -h
echo.
echo ERRORLEVEL=%ERRORLEVEL%
echo.
pause
"%~dp0Program.exe" -a
echo.
echo ERRORLEVEL=%ERRORLEVEL%
echo.
pause
"%~dp0Program.exe"
echo.
echo ERRORLEVEL=%ERRORLEVEL%
pause
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
AZJIO а можно сделать без компиляции скрипта?
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
Можешь ведь сам попробовать. У меня не выводит, кроме ERRORLEVEL.
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
Такой вопрос, а как можно отобразить информацию в cmd без компиляции скрипта?
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
sngr
Я уже писал скрипт запускаю из окна cmd и хотел бы отобразить информацию именно в этом окне.
с тестовыми файлами возится честно не хочется.
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
lorents
Из справки:
Функция не выводит никаких данных в консоль DOS, если скрипт не скомпилирован, как консольное приложение!!!
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
AZJIO жало, придется компилировать.
 
Верх