• 締切済み

1つのbatファイルで複数のwsfファイルの起動

1つの.batに複数の.wsfを起動させたく以下のように記述しました。 直列に処理(a.wsfが終わってからb.wsfを処理)させたいのですが、 Windows Server2008(64bit)だとa.wsfが終わらないうちにb.wsfが起動されてしまうケースが時々(1/20の確率)発生してしまうようです。 テスト段階では常に直列で処理されていたので、この書き方でよいと思っていたのですが、間違っているのでしょうか? ---- test.bat の内容 ---- C:\Windows\SysWOW64\cscript a.wsf C:\Windows\SysWOW64\cscript b.wsf

みんなの回答

  • devman
  • ベストアンサー率42% (20/47)
回答No.1

/wait を追加することで処理が終了するまで待機することができます。 start /wait C:\Windows\SysWOW64\cscript a.wsf start /wait C:\Windows\SysWOW64\cscript b.wsf 【参考文献】 start:コマンドプロンプトを使いこなそう! http://win-cmd.seesaa.net/article/89083750.html

bowbow3
質問者

お礼

ありがとうございます! 「start /wait」がないと直列処理の保証がないんですね。。。 .batはコマンドやプログラムをキックした後に条件分岐ができたりするのでプログラムと同様に上から下へと直列に流れるものだと思っていました。 月曜日に試してみます。と言っても・・・私のPCでは一回も発生したことないので確認がとりづらいのですが。。。とにかくやってみます。 本当にありがとうございます。

関連するQ&A

  • batからvbs起動

    バッチファイルからVBSファイルを起動したいと思いsample.batに以下の記述をしました。 「cscript //NoLogo "test1.vbs"」 するとプロンプト上に上記メッセージが繰り返し(無限ループ?)表示されてしまいます。 バッチからVBSファイルを起動するには何かコマンドが必要なのでしょうか?

  • batを逐次呼ぶbatファイルをバックグラウンド起動したい

    バックグラウンド起動するときは、STARTを使う、ということまではわかったのですが、 ---a.bat--- @echo off start b.bat exit ----------- ---b.bat--- @echo off start /wait c.bat start /wait d.bat echo end exit ----------- とすると、b.batのc.batを起動した時点で終了してしまうようです。 b.bat起動→c.bat起動→d.bat起動→「end」表示 とするにはどうしたらいいでしょうか? b.batの内容を出来ればしなくないのですが…。

  • VBAでのBAT起動

    VBAでのBAT起動 VBAでBAT起動が上手く行きません。 excel2003、xpを使っています。 C:\test/ の中に、 connect FTP_DL.bat の二つのファイルがあります。 connectの中に記述し、 FTP_DL.batをクリックすることで動くbatとなっております。 Shell "C:\test/FTP_DL.bat", 1 でDOS画面は一瞬でるのですが、batの中身の動作はしてくれません。 普通にダブルクリックでbatを起動すると動作します。 どう記述を変えればよいでしょうか?

  • バッチファイル(.bat)へWSH(.wsf)のエラーコードの返し方について

    はじめまして、kiwi88と申します。 バッチファイル(.bat)からwshスクリプト(.wsf)を呼び出すプログラムを作成しました。 そこで、wshスクリプトで実行されたエラーコードを呼び出しもとのバッチファイル(.bat)に返すことはできますでしょうか。 以下はバッチファイル(.bat)からwshスクリプト(.wsf)を呼び出す箇所のソースです。 ◆バッチファイル(test.bat)◆ ---------------------------------------- ~※処理内容省略~ cscript test.wsf //nologo //Job:wshscript > batch.log IF %ERRORLEVEL% NEQ 0 GOTO ERR exit :ERR set ret=%ERRORLEVEL% echo ****** [%:ERRORLEVEL=%ret%] ****** > err.txt exit %ret% ---------------------------------------- 以下はwshスクリプト(.wsf)のエラーコードを返す箇所のソースです。 ◆wshスクリプト(test.wsf)◆ ---------------------------------------- <job id = "wshscript"> <script language = "VBScript"> <![CDATA[ Option Explicit Function Main() ~※処理内容省略~ err = Err.Number Main = err End Function ]]> </script> </job> ---------------------------------------- 長くなってしまい、申し訳ありませんが、 ご教授願えますでしょうか。 宜しくお願いいたします。

  • バッチファイルからCscriptでVBSが起動できません

    環境は以下の通りです。 サーバA(Windows2000Server)  A.BAT:rshでサーバBのB.batを起動する サーバB(WindowsServer2008STD)  B.bat:バッチ内でCScriptを使用しB.vbsを起動する  ※rshのためSUAをインストール済みです サーバAのA.batを起動するとサーバBのB.batが起動され、内部でB.vbsが動く仕組みです。 しかし、B.Batは起動されるものの、CScriptが無視されているような動作結果になっています。 なお、サーバBで直接B.batを起動すると、B.vbsも起動されます。 リモート起動による影響なのかも知れませんが、現在手詰まり状態で困っています。どなたか解決へのアドバイスを下さいますようお願い致します。 サーバBがWindows2000Sarverの時は問題なく動いていたのですが、WindowsServer2008STDに更新後に動かない事象が発生しました。切替後、しばらくは動いていたのですが、ある時点から動かなくなり、今も動かない状態です。

  • batファイルの相対パス

    batファイルの相対パス あるバッチが相対パスであるファイルを参照しています このバッチファイルを直接起動すれば、正しく参照できますが、 別のディレクトリにいる別のバッチファイルからcallされた場合、 呼び出し先の相対パスではなく、 呼び出し元の相対パスになってしまいファイルを参照できません。 この問題をスマートに解決する方法はありませんか? 例のchild.batからはfile.txtを参照できますが、 parent_1.bat経由の場合、ファイルが見つかりませんとなります。 child.bat の中で、「cd c:\dir_a」を書いて基点を変更すればとりあえずは行けそうですが、可能な限り絶対パスのベタ書きは避けたいです。 宜しくお願いします。 【例】 c:\ | +-dir_a | | | +-child.bat | | | +-file.txt | +-dir_b | | | +-parent_1.bat | +-dir_c | +-parent_2.bat ===== file.txt ===== test-test-test ===== file.txt ===== ===== child.bat ===== type ./file.txt pause ===== child.bat ===== ===== parent_1.bat ===== call c:\dir_a\child.bat ===== parent_1.bat =====

  • batファイルについて教えてください

    以下の要件を満たすbatファイルを作成したいと思います。 ・5区切りのCSVファルイを以下のように変数に代入する  読み込みファイル例 列 a , b , c , d , e 111,222,333,444,555 111,222,222,666,777 111,111,123,888,999 行全体を%%a、c列を%%c e列を%%eへ代入 a,b,c,d,e ⇒ %%a c ⇒ %%c e ⇒ %%e ・%%cに3を含むものを確認したい ・if文を使用に3を含むものを処理対象にしたい ・3を含むものに処理を行った後それぞれ以下のようにファイル書き出しを実施したい。     %%a ⇒ zenbun.txt %%c + %%e ⇒ bassui.txt ・処理終了 forやifを使うんだろうなぁ、、程度しかわからず全く詳細な構成がわかりません。 どなたか教えていただけませんでしょうか? よろしくお願いします。

  • VC++ で.bat起動

    また、こちらを使わせていただきます。 VC++で.batファイルを起動しようとしていますが、cmdはあくのですが、.batが起動しません。他の参考にしてますが、なかなかたどり着きません。どなたか、アドバイスお願いいたします。 .bat fileは次のとおりです。 cd\Program Files\Wireshark> tshark -i.2 greater 170 -a duration:2 -w.... tshark -v-r e:\Test\test5.pcap.... VC++は次のとおり void CStartupapplicationView::OnBnClickedButtontest() { //cmdは、ShellExecuteでも、CreateProcessでも開けられますが、 //bat fileの起動がうまくいきません。 HINSTANCE ret = ShellExecute(m_hWnd,"open","cmd.exe",NULL,"c:\\Program Files\\Wireshark",SW_SHOWNORMAL); ShellExecute(m_hWnd,"open","c:Program Files\\Wireshark\\test.bat",SW_SHOW); //.batファイルは、c:Program Files\Wiresharkの下に入っています。//が、.Batは起動しません。 if (ret <= (HINSTANCE)32) AfxMessageBox("can not Shell.",MB_OK); //別の方法 STARTUPINFO sinfo; PROCESS_INFORMATION pinfo; ZeroMemory(&sinfo,sizeof(STARTUPINFO)); ZeroMemory(&pinfo,sizeof(PROCESS_INFORMATION)); sinfo.cb=sizeof (STARTUPINFO); sinfo.dwFlags=STARTF_USESHOWWINDOW; sinfo.wShowWindow=SW_SHOWNORMAL; if(!CreateProcess(NULL,_T("cmd.exe c:\\test2.bat "), // test2.batは、Document and settings/----------- //Startup applicationの下にはいっていますが、起動しません。 NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pinfo)); {//起動失敗 } //

  • フォルダー内の複数ファイル名を一括で変名するbat

    フォルダー内の複数ファイル名を一括で変名するbatを教えてください。 batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。 以下のような形式です。  No1 aaaa bbbb [com : *********].zip を  No1 aaaa bbbb.zip に変名する。   (*******は任意の文字列) 例えば、 No1 aaaa bbbb [com : taken2110221100014].zip であれば No1 aaaa bbbb.zip に変名する。 以下が参考になりそうなので https://oshiete.goo.ne.jp/qa/9263608.html 記事中の助言を元に以下のようにコードを修正してみましたが うまく処理できませんでした。 bat(test,bat,test2.bat)のどこを再修正すれば希望の処理ができますか ? 希望は、下記ですが 「batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。」 batを修正してもこのbatでは、D&Dで処理することは可能で無い場合は アドバイス又は他の参考なりそうなURLを紹介ください。 '------------------------------------------ rem test.bat echo off for /F "delims=" %%f in ('dir /*.mp4') do call :sub "%%f" exit /*.mp4 :sub set fname=%~1 set n=0 :loop call set c=%%fname:~%n%,1%% set /a n=n+1 if "%c%"=="" goto :EOF if "%c%"=="[com" goto break goto loop :break set /a n=n-1 set ext=%~x1 call set newname=%%fname:~0,%n%%% call set newname=%newname%%ext% if "%newname%"=="" goto :EOF if "%newname:~0,1%"=="." goto :EOF ren "%fname%" "%newname%" goto :EOF '-------------------------------------- rem bat2.bat for /F "tokens=1* delims=[com" %%F in ('dir /b *.mp4') do echo move %%F[com%%G %%F.mp4 '--------------------------------------

  • bat ファイルの実行制御

    10台(例)A/B/C/D/E/F/G/H/I/J PCがありそのうちの5台A/B/C/D/Eはbatファイルの処理を途中までとしたいです。 batファイルを実行した際に実行しているPCの名前を確認して処理を続行or終了 したいのですが何か良い方法はないでしょうか? 例えばテキストファイル内にA~EのPC名を記載しておいてbatファイル実行時にはテキストファイルを確認して該当のPCじゃないか確認 等・・・

専門家に質問してみよう