web-dev-qa-db-ja.com

autoitを介してWindowsコマンドを実行するにはどうすればよいですか?

これはsc.exeについてです

プログラムをWindowsのサービスとして実行したい。コマンドプロンプトを使用して実行できます

私のプログラムはsystem32フォルダーに配置されているので、最初にsystem32に移動してから、これらのコマンドを使用します

c:\windows\system32>sc create demo binpath= "pg.exe" type= own start= auto DisplayName= "autostart"
c:\windows\system32>sc config demo binpath= "cmd.exe /c c:\windows\system32>pg.exe" type= own start= auto DisplayName= "autostart"

これらのコマンドを実行した後、PCを再起動すると、プログラムは正常なサービスとして実行を開始します。

ここで、これらのコマンドを実行するautoitスクリプトを作成したいのですが、その方法を理解できません。

私はこれを試しました

#include <RunCMD.au3>
$cmd = "sc create demo1 binpath= c:\pg.exe type= own start= auto"
_RunCMD($cmd)
$cmd = "sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto"
_RunCMD($cmd)

最初のコマンドは正常に実行されますが、2番目のコマンドは実行されません。

4
user333908

AutoITを介してcmdコマンドを実行する方法

AutoIT Run 関数を使用して、 Run 関数を使用して外部プログラムを実行\実行できます。以下は、指定したロジックの例です。

#RequireAdmin
Run('sc create demo1 binpath= c:\pg.exe type= own start= auto')
Run('sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto')

_ RunCMD関数スニペット で2番目のコマンドを期待どおりに実行する際に発生する可能性のある問題は、二重引用符が使用されているためです設定されている変数の値の周囲および範囲内

変数の実際の値には二重引用符が含まれているため、二重引用符ではなく、変数値を一重引用符で囲む例を次に示します。

$cmd = 'sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto'

enter image description hereenter image description here

1
Pimp Juice IT

ComSpecをご覧ください https://www.autoitscript.com/wiki/Snippets_%28_CMD_%29

エスケープ文字があるため、構文は少し注意が必要ですが、それは可能です。

また、一部のコマンドラインをAutoITの組み込み関数に置き換えることができる場合もあります。

0
Codes

CMDコマンドは、Windowsバッチファイルから実行するのが最適です。バッチファイル内のコマンドを使用して起動時に実行するようにバッチファイルを設定すると、問題なく機能するはずです。

  • スタートメニューで実行中のWindows7に「起動」というフォルダーがある場合は、コマンドを含むバッチファイルをこのフォルダーにドラッグします。Windowsが起動すると、Windows 7が起動し、コマンドが実行されます。
  • Windows 8または8.1を実行している場合、ファイルパスは次のとおりです。C:\ Users(ユーザー)\ AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup

バッチファイルが起動時にフォルダに入ると、実行されてコマンドが実行されます。

バッチファイルの形式:

@echo off
(your command)
(your command)
exit

それでもうまくいかない場合は、スタートアップフォルダを試してみてください。

0
Weirdest