Что нового

Как ввести команду для командной строки в скрипте

Hulk777

Новичок
Сообщения
69
Репутация
1
Здравствуйте. Использую gui в совокупности с кучей батников. Подскажите на примере как напрямую выдавать команды из скрипта(если это возможно),желательно с какими нибудь путями.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Гляньте, может это подойдёт
Код:
ShellExecute
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
_RunDos



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

Или
Код:
ConsoleRead
ConsoleWrite
ConsoleWriteError
StderrRead
StdinWrite
StdioClose
StdoutRead
 
Автор
H

Hulk777

Новичок
Сообщения
69
Репутация
1
Их так много мне не разобраться без помощи. Мне нужно хотя бы как управлять Dism-ом.
Это код одного из батников:
Код:
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%I:\Updater set VAR=%%I:
cd "%VAR%\Updater\Utilites\Dism86"
start /b /wait dism /Mount-Wim /WimFile:%VAR%\Updater\Integrator81\wim\install.wim /index:1 /MountDir:%VAR%\Updater\Integrator81\Mwim
start /b /wait dism /image:%VAR%\Updater\Integrator81\Mwim /Add-Package /PackagePath:%VAR%\Updater\Integrator81\Upd
start /b /wait dism /Unmount-Wim /MountDir:%VAR%\Updater\Integrator81\Mwim /commit
start /b /wait dism /cleanup-wim
Как его вогнать в скрипт и повесить на один чекбокс?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Hulk777
вогнать в скрипт и повесить на один чекбокс
Код:
Switch GUIGetMsg()
  Case $Checkbox1
    $File = @TempDir & "\TempBatchFile.bat"
    $Text = 'for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%I:\Updater set VAR=%%I:' & @CRLF & _
    'cd "%VAR%\Updater\Utilites\Dism86"' & @CRLF & _
    'start /b /wait dism /Mount-Wim /WimFile:%VAR%\Updater\Integrator81\wim\install.wim /index:1 /MountDir:%VAR%\Updater\Integrator81\Mwim' & @CRLF & _
    'start /b /wait dism /image:%VAR%\Updater\Integrator81\Mwim /Add-Package /PackagePath:%VAR%\Updater\Integrator81\Upd' & @CRLF & _
    'start /b /wait dism /Unmount-Wim /MountDir:%VAR%\Updater\Integrator81\Mwim /commit' & @CRLF & _
    'start /b /wait dism /cleanup-wim'
    FileWrite($File, $Text)
    ShellExecuteWait($File)
    FileDelete($File)
А переписать команды bat-файла на AutoIt - это совсем другая история.
 
Автор
H

Hulk777

Новичок
Сообщения
69
Репутация
1
Код:
Switch GUIGetMsg()
  Case $Checkbox1
    $File = @TempDir & "\TempBatchFile.bat"
    $Text = 'for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%I:\Updater set VAR=%%I:' & @CRLF & _
    'cd "%VAR%\Updater\Utilites\Dism86"' & @CRLF & _
    'start /b /wait dism /Mount-Wim /WimFile:%VAR%\Updater\Integrator81\wim\install.wim /index:1 /MountDir:%VAR%\Updater\Integrator81\Mwim' & @CRLF & _
    'start /b /wait dism /image:%VAR%\Updater\Integrator81\Mwim /Add-Package /PackagePath:%VAR%\Updater\Integrator81\Upd' & @CRLF & _
    'start /b /wait dism /Unmount-Wim /MountDir:%VAR%\Updater\Integrator81\Mwim /commit' & @CRLF & _
    'start /b /wait dism /cleanup-wim'
    FileWrite($File, $Text)
    ShellExecuteWait($File)
    FileDelete($File)


Это то что доктор прописал, но срабатывает только первая команда для Dism.
Код:
'start /b /wait dism /Mount-Wim /WimFile:%VAR%\Updater\Integrator81\wim\install.wim /index:1 /MountDir:%VAR%\Updater\Integrator81\Mwim' & @CRLF & _

Образ монтируется и командная строка закрывается. Как сделать чтобы все команды отрабатывали?
В батнике они отрабатывают по очереди.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
А если так запускать?
Код:
ShellExecuteWait(@ComSpec&" /c "&$File)
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ну в твой код, после этой строки
Код:
FileWrite($File, $Text)
 
Автор
H

Hulk777

Новичок
Сообщения
69
Репутация
1
Ошибку выбило здесь
Код:
FileWrite($File, $Text)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Hulk777
срабатывает только первая команда
Разбирайтесь с кодом батника. Или с правами запуска. Или с битностью системы.
У меня всё работает
Код:
$File = @TempDir & "\TempBatchFile.bat"
$Text = 'start /b /wait notepad.exe' & @CRLF & _
'start /b /wait calc.exe'
FileWrite($File, $Text)
ShellExecuteWait($File)
FileDelete($File)
 
Верх