• 締切済み

Winでバッチファイルで外部処理後、ファイル処理

全部で3行のバッチファイルを作成しました。一行目で外部プログラムを呼び出し走らせて(30分ほどで終了します)、2行目と3行目でファイル処理をするものです。生成されたファイルをZIPして元のファイルを削除するだけです。 問題は2行目が始まらないので、バッチファイル自体が終了しません。 おそらく.batが一行目の処理終了を認識しないためだと思うのですが、どうしたらよいのでしょうか?バッチファイル自体は手動クリックで開始です。 例えば40分後に強制的に2行目に進む方法とか、外部処理の終了が、外部アプリの終了なのか・・・ よろしくお願いします。

みんなの回答

回答No.6

失礼! 呼び出しは下部に記載されていましたね、 3行ではないですが、 明日にでもちょっと見てみます。

回答No.5

>>いやいや、貴殿の書いた3行のコードのことを 言っているのですが・・・ これを見ても、貴殿がどう呼び出しているか分かりません。

回答No.4

そもそも、元のコードを公開して下さい。

piyo-maru7
質問者

補足

以下のコードがVI.Vision RPAというChromeブラウザの拡張機能内部で流れます。JSONのようです。 { "Name": "Test", "CreationDate": "2022-5-12", "Commands": [ { "Command": "csvRead", "Target": "ss_backup_list.csv", "Value": "", "Description": "" }, { "Command": "while_v2", "Target": "${!CSVReadLineNumber} <= ${!CSVReadMaxRow}", "Value": "", "Description": "" }, { "Command": "csvRead", "Target": "ss_backup_list.csv", "Value": "", "Description": "" }, { "Command": "selectWindow", "Target": "tab=open", "Value": "https://app.smartsheet.com/sheets/${!COL3}", "Description": "" }, { "Command": "waitForElementPresent", "Target": "xpath=//*[@id=\"foid:22\"]/div/div[5]", "Value": "", "Targets": [ "xpath=//*[@id=\"foid:22\"]/div/div[5]", "xpath=//div[7]/div/div[5]", "css=#foid:22 > div > div.columnHeader.lodestarGridFix.columnHeaderSelected" ], "Description": "" }, { "Command": "pause", "Target": "5000", "Value": "", "Description": "Wait for 5 sec" }, { "Command": "click", "Target": "xpath=//*[@id=\"mnb-1\"]/span", "Value": "", "Description": "File" }, { "Command": "XMove", "Target": "250,560", "Value": "", "Targets": [ "xpath=//*[@id=\"foid:27\"]/div/table/tbody/tr/td[2]", "xpath=//div[7]/div/table/tbody/tr/td[2]", "css=#foid:27 > div > table > tbody > tr.clsListRowHover > td.clsStandardMenuText" ], "Description": "" }, { "Command": "XMove", "Target": "400,565", "Value": "", "Description": "" }, { "Command": "XClick", "Target": "400,565", "Value": "", "Description": "" }, { "Command": "store", "Target": "true", "Value": "!errorIgnore", "Description": "" }, { "Command": "click", "Target": "xpath=//*[@id=\"foid:30\"]/div/span", "Value": "", "Description": "Force export without saving changes" }, { "Command": "store", "Target": "false", "Value": "!errorIgnore", "Description": "" }, { "Command": "pause", "Target": "25000", "Value": "", "Description": "25 second pause" }, { "Command": "executeScript", "Target": "return ${!CSVReadLineNumber} +1", "Value": "!CSVReadLineNumber", "Description": "" }, { "Command": "end", "Target": "", "Value": "", "Description": "" } ] } バッチファイルの中身は以下です REM *******Zip Start the UI VISION macro******** "C:\Program Files\Google\Chrome\Application\chrome.exe" "file:///F:/each_backup_for_batch_process.html" REM *******Zip set of files with today's date******* F: For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) echo %mydate% .\7-Zip\7z.exe a SSbackup_%mydate%.zip UIvision_SSbackup REM ********Delete all files in work folder ********** del UIvision_SSbackup /Q よろしくお願いします。

  • watanabe04
  • ベストアンサー率18% (295/1597)
回答No.3

aaa.txtを作るところがないですね。 バッチ1の最後にでも echo "abc" > aaa.txt を入れてください。

piyo-maru7
質問者

お礼

そもそもバッチ1が終わったことを.batが認識してくれないのでうまくいきませんでした。ありがとうございました。

  • watanabe04
  • ベストアンサー率18% (295/1597)
回答No.2

なにかバッチが終わったフラグがいりますね。 if exist aaa.txt del aaa.txt バッチ1 :start if exist aaa.txt goto next wait 60 goto start :next 次の処理 て感じかなぁ

  • kana1104
  • ベストアンサー率23% (174/727)
回答No.1

1行目に何を書いているかわからないのに、何を指摘しろというのでしょうか。 単に実行モジュールを書いてるだけですか。start文を書いたりしていますか。 batの内容は質問に書けないのですか?

piyo-maru7
質問者

補足

すみません、一般的な質問だと思ったのでバッチの内容までは書きませんでした。外部アプリの概要:https://gigazine.net/news/20220417-ui-vision/ バッチファイル: "C:\Program Files\Google\Chrome\Application\chrome.exe" "file:///F:/each_backup_for_batch_process.html" For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) .\7-Zip\7z.exe a SSbackup_%mydate%.zip UIvision_SSbackup del UIvision_SSbackup /Q

関連するQ&A

  • バッチファイルについて

    お聞きしたいのですが、 あるディレクトリーに test.bat test.php test.txt があり test.bat で test.php を起動して text.txt を一行一行処理しているのですが、 バッチファイルで、強制終了したとして(Ctrl + C) もう一度起動せずに Entertキー を押して test.txt の次の行から開始したいのですが可能ですか?? 詳しい方がいましたら教えてください。 宜しくお願いします。

  • バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。

    バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。 バッチファイルでほかのバッチファイルを呼び出した後の処理で困っています。 どうぞ教えてください。 「A.bat」というバッチファイルを実行すると、「1.bat」というバッチファイルを 実行させ、「1.bat」の実行結果によって、処理を分岐させたいと考えています。 「1.bat」をcallで呼び出し、実行はできたのですが、「1.bat」は最後にエンタキーを 押さないと終了しないようになっています。そのため、「エンターキーを押して終了させて ください」というメッセージが出たままの画面で終わってしまい、「A.bat」に帰ってくることが できません。 「1.bat」は中身を扱えないようにしてあるバッチファイルなので、こちらでエンターキーを 押さずに終了させるようにはできません。何かいい方法はないでしょうか?

  • バッチファイルについて

    あるディレクトリーに test.php と test.bat があり test.batには php test.php pause と記述しているので、phpの処理が終われば pause でバッチファイルが消える事なく残っているのですが、 phpの処理の途中で、処理を中断する事は可能でしょうか?? また、どの用に記述してやればよろしいのですか?? ctrl+c を押すと強制終了してしまいうまくいきません。 詳しい方がいましたら教えてください。 お願いします。

  • VBAから複数のバッチファイルを実行する際に、1つの処理が終了するまで

    VBAから複数のバッチファイルを実行する際に、1つの処理が終了するまで次の処理を待機させる方法について こんにちは。VBA初心者です。 Shell関数を使って複数のバッチを連続して実行するプログラムを書きたいのですが、前のバッチ処理が終了する前に次のバッチが実行されてしまいエラーになってしまいます。 1つのバッチ処理が終了するまで、次の処理を待機させるようなことは可能でしょうか。 具体的には、B列に「test_01.txt」「test_02.txt」... といったファイル名が入力されていて、隣のA列に何らかの文字/記号があった場合は、指定されたバッチ(ファイル名.bat)が実行されるということをやりたいと考えています。 以下のようなプログラムを書いてみましたが、実行するバッチが複数になるとうまくいきせん。 どうしたら問題を回避できるか、ご教示いただけないでしょうか。 よろしくお願いします。 Sub バッチを実行() i = 7 'リストの開始行 Const myPath As String = "D:\sample_batch\"   Const endPath As String = ".bat"  For i = 7 To 200 '7行目から200行目まで実行 If Cells(i, 1).Value <> "" Then Shell (myPath & Cells(i, 2).Value & endPath) End If Next End Sub

  • taskkill をバッチ処理できない。

    バッチファイルを作って、taskkillを実行しようとしましたが、出来ません。 ファイル名は、たとえば、task.bat 中身には、 taskkill /F /im imagename と入れました。 これで実行すると、MSDOSウインドウが開いてバッチ処理が開始されますが、 taskkill /F /im imagename が、永遠に連続して繰り返し現れて、いつまでたっても終わりません。 また、kill 自身も実行されておりません。 copy コマンドなどでは、問題なくできます。 MSDOSプロンプトを手動で開いて、手で入力して実行すると、問題なくKillできます。 なぜでしょうか。

  • バッチファイルの実行方法

    Windows Server 2003で、Robocopy.exe(Resource KitToolsからインストールしたもの)の連続処理のために、下記のようなバッチファイル(.bat)を用意しました。 robocopy "D:\a" "F:\a" /E /copy:DT /NP /LOG:c:\robocopy.txt /TEE robocopy "D:\b" "F:\b" /E /copy:DT /NP /LOG+:c:\robocopy.txt /TEE .... コマンドの各行は間違っていないようです(cmd.exeに各行を打ち込んで実行すると正常に処理されます)。しかし.batをダブルクリックするとコマンドプロンプト画面内でバッチファイルの1行目がすごい勢いで流れるだけで、処理されません(コマンドプロンプトを強制終了するしかありません)。 最初は.batをダブルクリックすると正常に処理されていたのですが、急にこうなりました。なぜでしょうか? command.comから.batファイルを実行すると正常に処理されます。command.comから実行しないといけないものなのでしょうか? バッチファイルの拡張子を.batにするか、.comにするか関係があるでしょうか?

  • バッチファイルについて

    あるバッチファイルがあります。 そのバッチファイル内では、AとBというバッチが 呼び出されているとします。 このときのAおよびBの処理開始・終了時刻を ログとしてとりたいのですが、どのように記述 すればよいのでしょうか?教えてください。 あいまいな質問で申し訳ないですが よろしくお願いします。

  • バッチファイルを1個だけしか起動しないようにしたい

    エクスプローラー上から バッチファイル(test.bat)を ダブルクリックしてバッチファイルを実行しています。 通常はコマンドプロンプトが1個だけ表示されて、 バッチファイルが実行して実行が終了すると コマンドプロンプトも閉じられます。 しかし、時々、 コマンドプロンプトが2個表示されることがあります。 つまり、ダブルクリックが、 1回ではなく2回実行されたと誤認識されて、 同じバッチファイル(test.bat)が 2つ起動してしまったと思われます。 当然、その後の処理はおかしくなります。 (バッチファイル(test.bat)の中に 何らかのコードを追加するなどして) 必ず1個だけしか起動しないようにすることは、 できないでしょうか。 (Windows10)

  • バッチ処理をすると(Accessの)ldbが残ってしまいます

    ≪ 質問 ≫ batファイルをタスクで動かして、早朝にAccessを動かしファイル生成しています。 ファイル自体は、正しく生成されているのですが [Accessファイルの名称].ldb というldbが残ってしまいます。 不要なldbなので削除しようとしても、 「誰かがAccessを利用中」という理由で削除できません。 (タスクマネージャでプロセスを終了し、削除しています) Batファイルから、AutoExecで起動したAccessを正しく終了させるには どうすれば良いですか? ≪ 動かしているサーバ ≫ ・Windows Sever 2003 R2 ・Microsoft Office Access 2003 ≪ 処理内容 ≫ 1. 別サーバからAccessで使うデータをコピーする 2. Accessを起動し、ファイル読込→CSV出力 という一連の処理をする 3. 出力されたCSVファイルをバックアップフォルダにコピー&リネームする 4. バックアップフォルダの中身を最新2週間分残して削除する ※1~4の処理はそれぞれ別のbatファイルに記述していますが  タスクに登録する都合上、1個のbatファイル内で「call」で順番に  呼び出して処理しています。 ≪ 心当たり? ≫ Accessを動かしているサーバにインストールされているのは Access2003なのですが、このmdb自体はAccess2000で作成しました。 このため、「Access 2000 ファイル形式」のままで Access2003で動かしています。

  • バッチファイル

    バッチファイルとは一括処理を行う為のプログラムと認識しています。 拡張子が.batになった場合はバッチファイルになるのでしょうか?またどういう時につかうのでしょうか? ご教示頂ければ幸いです