wshで複数のwshを一度に起動したい

このQ&Aのポイント
  • WSHから複数のWSHを一度に起動する方法について教えてください。
  • プログラム1では、順番にWSHを起動することができますが、一度に並行して起動する方法はあるのでしょうか?
  • WSHで複数のWSHを並行して起動させる方法を教えてください。
回答を見る
  • ベストアンサー

wshで他の複数のwshを一度に起動したい

WSHから他のWSH(例えばtest1.vbs、test2.vbs、test3.vbs)を順に起動していく処理だと、下記(プログラム1)の通りで上手く行くのですが、一度に並行してキックさせたい場合は、どのようにしたら良いでしょうか? ----------プログラム1(start)--------------- Const ForReading = 1 Dim FileShell Set FileShell = WScript.CreateObject("Scripting.FileSystemObject") Function ReadFile(ByVal FileName) ReadFile = FileShell.OpenTextFile(FileName, ForReading, False).ReadAll() End Function Execute ReadFile("test1.vbs") Execute ReadFile("test2.vbs") Execute ReadFile("test3.vbs") ----------プログラム1(end)---------------

  • kumar
  • お礼率21% (19/87)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

スクリプトファイルを読み込むのではなく、 VBSファイルを個別にシェル実行すればいいのでは? WshShell.Run("wscript.exe ????.vbs") というかんじで。

関連するQ&A

  • VBscriptで「改行」と「"」を置換させる

    VBスクリプトを使ってファイルを置換したいと考えています。 以下のVBSファイルとコマンドを使って、置換することはできました。 が、置換対象が「改行」と「"」の場合、エラーとなって置換できません。 どうすればいいのでしょうか。 よろしくおねがいします。 ********コマンド******** (1)cscript replace.vbs "C:\test.txt" "Jim" "Jane" (2)cscript replace.vbs "C:\test.txt" ""_\n" "a_test" ********VBSファイル(replace.vbs)******** Const ForReading = 1 Const ForWriting = 2 strFileName = Wscript.Arguments(0) strOldText = Wscript.Arguments(1) strNewText = Wscript.Arguments(2) Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(strFileName, ForReading) strText = objFile.ReadAll objFile.Close strNewText = Replace(strText, strOldText, strNewText) Set objFile = objFSO.OpenTextFile(strFileName, ForWriting) objFile.WriteLine strNewText objFile.Close (1)のコマンドを実行すると、 「Jim」は「Jane」に置換されますが、 (2)のコマンドを実行すると、エラーになり置換されません。 エラーメッセージ: 「Microsoft VBScript 実行時エラー: インデックスが有効範囲にありません。」 よろしくおねがいします。

  • VBSを使用してXMLファイルの不要行を削除を行いたい

    お世話になります。 表題の件先に進まず困っておりお力を貸して頂けますでしょうか。 OSより出力されたXMLファイルに不要箇所があり、 その不要箇所をVBSを使用して削除し成形し直す事を行っております。 XMLファイルをVBSでテキストと読み取り不要箇所を検索し削除と思ったのですが、思うようにいきません。 該当箇所の先頭からの文字数を検索し、その前後を抜き出して 成形しなおそうとしたのですが、検索が出来ませんでした。 【検索VBS】 Const ForReading = 1 startxml = "<Parameters>" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("Test01.xml", ForReading) Wscript.Echo InStr(strCharacters,startxml) 【読み込みファイル】 添付します 【結果】 0 【不要箇所】 <Parameters>から</Parameters>までです。 よろしくお願いします。

  • [VBS] 動的配列について教えてください!

    VBS初心者です。 以下のように、リストを読み込んで動的配列に持たせたいです。 ----------------------------------------------------------------- GET_FILE = "sample.txt" SET objFs = CreateObject("Scripting.FileSystemObject") ' 動的配列セット Call Array_Set("AryVal",GET_FILE) ' 表示 For i = 0 To Ubound(AryVal) msgbox AryVal(i) Next ' 終了 WScript.Quit 0 Function Array_Set(AryName,ReadFile) Set strVal = objFs.OpenTextFile(ReadFile) ' 1行づつ処理 Do While strVal.AtEndOfStream <> True i = i + 1 ReDim Preserve AryName( i - 1 ) AryName( i - 1 ) = strVal.ReadLine Loop End Function ----------------------------------------------------------------- 見て頂くと分かるとおり、動的配列として持たせたい変数名を Functionの引数として渡しています。(当然のごとくエラー、、、) Functionの引数として渡した値に動的配列が格納される方法があれば教えてください。 よろしくお願いします。

  • WSHでリモートスクリプト起動時エラー

    □やりたいこと  2台のXP環境で、WSHを使用してリモートスクリプトを実行させたい  (ローカルサーバAからリモートサーバBでJBSを実行) □事象  サーバAのVBS(rmt_local.vbs)を起動したところ、  CreateScript実行時に以下のエラーとなります。  【エラーメッセージ】  429 ActiveX コンポーネントはオブジェクトを作成できません。 □質問  原因と対応方法を知りたい。  下記の設定以外になにが影響しているのか? □環境 【ローカルサーバA】  OS:WindowsXP Professional Version 2002 SP3  WSH:Version5.8  ドメイン:WORKGROUP 【リモートサーバB】  OS:WindowsXP Professional Version 2002 SP3  WSH:Version5.8  ドメイン:WORKGROUP 【スクリプト配置】  ローカルサーバAのC:\TESTにのみスクリプト(1)と(2)を格納している  リモートサーバBにはC:\TESTのフォルダのみ作成している □設定関連  ●ローカルとリモートで設定   ファイアウォール設定(DCOM、wsdcript.exeを通す)   ドメインプロファイルの設定でリモート管理の例外を許可   実行ユーザをAdministratorsグループに追加  ●ローカルのみ設定   COMセキュリティのアクセス許可で「ANONYMOUS LOGIN」のリモートアクセスを許可  ●リモートのみ設定    レジストリ:HKEY\LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa         の下のforceguest(文字列値)に0を設定   レジストリ:HKEY\LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings         の下にRemote(文字列値) を作成して1を設定   COMセキュリティのアクセス許可でEveryoneグループの「リモートアクセス」を許可   COMセキュリティの起動許可でAdminstratorsグループの「リモートからの起動」と   「リモートからのアクティブ化」を許可 ================================================================ □スクリプト(1) 【rmt_local.vbs】 Option Explicit On Error Resume Next Dim objWshCtrl ' WshController オブジェクト Dim strRemotePC ' リモートのコンピュータ名 Dim strScript ' 実行するスクリプトファイル Dim objExecCmd ' 実行コマンド情報 Set objWshCtrl = WScript.CreateObject("WshController") If Err.Number = 0 Then strRemotePC = "B" strScript = "rmt_remote.vbs" Set objExecCmd = objWshCtrl.CreateScript(strScript, strRemotePC) If Err.Number <> 0 Then Set objExecCmd = Nothing WScript.Echo "エラー: CreateScript " & Err.Description WScript.Echo "異常終了しました。" Else WScript.Echo strRemotePC & " で " & strScript & " を実行します。" objExecCmd.Execute Do While objExecCmd.Status = 1 WScript.Sleep(100) Loop WScript.Echo "正常終了しました。" End If Else WScript.Echo "エラー: CreateObject " & Err.Description End If Set objExecCmd = Nothing Set objWshCtrl = Nothing ================================================================ □スクリプト(2) 【rmt_remote.vbs】 Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル書き込み用 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:\TEST\test.log", 8, True) objFile.WriteLine Now() objFile.Close Set objFile = Nothing Set objFSO = Nothing

  • VB6でWSH(vbs)を起動できる方法を教えてください。

    visual Basic 6でアプリケーションを開発していますが、 このアプリケーション(exe)から、test.vbsを起動したいと考えています。 ====vbのコード===== 'ボタンクリックしたら、test.vbsが実行される Private Sub Command1_Click() shell("test.vbs") End Sub ==== test.vbs ==== MsgBox("test.vbs起動しました。") です。 上記のようにコードを書きましたが、Shell関数で 「実行時エラー'5' プロシージャの呼び出し、または引数が不正です。」 のメッセージが出力されて、vbsが起動できません。 VB6でWSH(vbs)を起動できる方法を教えてください。 環境は以下の通りです。 OS:WIN2000 アプリ:VB6 ブラウザ:IE5.0

  • WSHの正規表現について

    WindowsXPのCACLSコマンドの出力結果(テキストにリダイレクト)に改行や復帰が入っていて、空行の削除をしたいのです。 下記のプログラムを作ったのですが、復帰コードが 入っている箇所がとれないのです。どなたかご教授お願い致します。。。 Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.GetFolder("C:\WORK") Set regEx1 = New RegExp srhStr1 = "^ *$" regEx1.Pattern = srhStr1 regEx1.Global = True regEx1.IgnoreCase = True Set TextFile = fso.OpenTextFile("cacls結果.txt") Do Until TextFile.AtEndOfStream tmpLine = TextFile.ReadLine If regEx1.Test(tmpLine) Then else srhLine = srhLine & tmpLine & vbNewLine End If Loop WScript.Echo srhLine

  • テキスト改行(split+vbCrLf)について。

    現在下記のようなスクリプトを試しています。 内容的には C直下にあるテキストファイルを読み込み テキスト内部の情報を改行ごとに配列で取得しようとしています。 ////////////////////////////////////////////////////////////////////////////////// //テキスト読み込み ////////////////////////////////////////////////////////////////////////////////// var FORREADING = 1; // 読み取り専用 var TRISTATE_FALSE = 0; // ASCII var oText = new ActiveXObject("Scripting.FileSystemObject"); var ofile = oText.OpenTextFile( "C:/Info.txt", FORREADING, true, TRISTATE_FALSE );//ここの""でテキストディレクトリの指定 var oRead = ofile.ReadAll(); var ovd = oRead.vbCrLf; var oSplit = oRead.split("vbCrLf"); WScript.Echo(oRead[0]); WScript.Echo("初めは"+oRead[0]+"で次は"+oRead[1]+"です"); // ファイルを閉じる ofile.Close(); oText = null; ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// この状態で実行すると、ウィンドウでは空白になってしまいます。 どこが原因かだいぶ悩んでいます。 どうのような解決策があるでしょうか? ご教授よろしくお願いします。

  • VB6.0 CreateObject以外のファイルI/O

    以前CreateObject("Scripting.FileSystemObject")を使用してファイルを読込む方法、一行ずつ書込む方法を教えていただいたのですが。 環境によってはウイルスチェックに引っかかってしまうようで、別な手段を取らなければならなくなりました。 読込み: Set objFso = CreateObject("Scripting.FileSystemObject") Set objTxtSt = objFso.OpenTextFile(strFilePass, 1) strData = CStr(objTxtSt.ReadAll()) 書込み: Set objFso = CreateObject("Scripting.FileSystemObject") Set objTxtSt = objFso.OpenTextFile(strFilePass, 2, False) Call objTxtSt.WriteLine(strData) 現在の処理は以上です。 上記と同じ処理をCreateObjectを使用せずに作成するにはどのようにすればよろしいでしょうか。

  • WSHについて教えてください

    他人の書いたプログラムを解析しているのですが、意味のわからない 行があって困っています。 下記はtest.txtをいうファイルを読み込み、その中に文字列"<checktest>"が 含まれていたら"-1"を返す関数です。 ■関数部分 function checktext(InFileN) var LineStr = new String(); while(!InFileN.AtEndOfStream) { LineStr = InFileN.ReadLine(); WScript.Echo(LineStr); WScript.Echo(">>" + LineStr.indexOf("<checktest>")) if(-1 < LineStr.indexOf("<checktest>")) { return(-1); } } return(1); ■関数呼び出し部分 var FileN,CheckFlg; FileN = FileSys.OpenTextFile(test.txt); CheckFlg = checktext(FileN); この関数の8行目の処理の意味がわかりません。 WScript.Echo(">>" + LineStr.indexOf("<checktest>")) <checktest>という文字は先頭にあるので、LineStr.indexOf("<checktest>") は0を返すと思います。 そうすると、この行は">>0を表示する"という意味でしょうか? なんのためにこの行があるのかわかりません。 どなたかわかる方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • VB.NETでオブジェクトの内容を見る方法ありませんか?

    デバッグでプログラムを見ているのですが、Object型のデータの場合クイックウォッチでみても「System_ComObejct」となっていて値がどうなっているのか、ちゃんと動いているのかわかりません。 今困っているのは下記二つのとこで (1)すべて戻り地が「System_ComObejct」でちゃんと動作しているのかがわからない。CSV_Filesには何が入っているのか? (FSO,DF,CSV_Filesすべてobject型です) FSO = CreateObject("Scripting.FileSystemObject") DF = FSO.GetFolder(strDir) CSV_Files = DF.Files (2)(Filename,CSV_Files,myFileすべてObject型) For Each Filename In CSV_Files MyFile = FSO.OpenTextFile(Filename, ForReading) Filenameにどんな値が入っているのか知りたいです。 よろしくお願いしますー><

専門家に質問してみよう