6

こんにちは

先日、WinActorでbatファイル起動を試みたところ、うまくいかなかったので検証を行ってみました。

設定は正しいはずなのに(batは起動しているみたいなのに)batファイルを起動させた時に生成されるファイルが出力されないといった方は、もしかしたら役に立つかもしれないと思い、投稿してみました。

結論

WinActorでbatファイルを起動させると、カレントディレクトリはbatファイルを置いている場所ではなく、WinActor.exeを置いている場所に変わってしまう

検証内容

①②  手動でbatファイルが正しく挙動することを確認。

③~⑨ WinActorでbatファイルを起動させ、結果が変わる原因を調査。

⑩⑪  batファイルを修正し、手動でのbatファイル起動とWinActorでのbat起動の結果が同じになることを確認。

今回の検証で、batファイルをWinActorで起動する場合、抽出されるファイルをフルパスで指定しなければいけないことがわかりました。

今までbatファイルの起動を試みて、うまくいかなかった方はWinActor.exeのフォルダを見ると、生成物があるかもしれません。

①以下のようなbatを作成し、デスクトップに配置しています。

 (memo.txtにHelloと追記していくbatです)

②手作業でbatを実行したところデスクトップのmemo.txtにHelloと記入されました。

③以下のように、「コマンド実行」を用いて、batを起動させます。

④デスクトップのmemo.txtにはHelloと追記されていませんでした。

 色々と原因を探っていると、WinActor.exeと同じフォルダにmemo.txtを発見しました。

⑤Helloと記入されていました。

⑥他のライブラリを用いて、batを起動させます。

 ※batファイルのフルパスを設定しました。

⑦ ④と同様にWinActor.exeと同じフォルダのmemo.txtにシナリオ内のbat起動と同じ回数追記されていました。

⑧「コマンド実行結果をファイル保存」を用いて、batがどのように処理を行ったか検証しました。

⑨やはりWinActor.exeと同じフォルダへ処理を行っていることが確認できました。

⑩batファイルを以下のように修正しました。

 (memo.txtをフルパスに指定)

⑪WinActorでbatファイルを起動させたところ、②と同様にデスクトップのmemo.txtにHelloと追記されました。

 (わかりづらくてすみません。下のキャプチャはデスクトップのmemo.txtです。)

回答した質問

動きがわかっていると、バッチのコーディングの際に
引数としてフォルダパスを代入して処理させる作りとするなど
検討することができるので良いですね。
シナリオをタスクスケジュールで実行した際は、実行者の権限に
よって動きが変わるなど検討することが多くなります。
色々試してみてください。
また報告をお待ちします。