電子書籍の厳選無料作品が豊富!

csvtest.batをダブルクリックすると実行できるのですが、以下のコードにするとコマンドプロンプトが4つ起動し、全て「ファイル data.csvが見つかりません」となり実行できません。ファイルやマクロは全て同じフォルダにあります。
csvtest 1.bat は data1.csv、csvtest 2.bat はdata2.csvを読み込むはずなのでコマンドプロンプトで4つ全て「data.csvが見つかりません」となるのも気になります。

どなたか詳しい方教えてください。よろしくお願いします。



Sub バッチファイル複数実行()

'csvtest.bat, csvtest1, csvtest2, csvtest3 複数のバッチファイル
Dim batFileName, batFileName1, batFileName2, batFileName3 As String

'シェルオブジェクトの作成
Dim ShellObject As Object

batFileName = "C:\Users\Aiba\Desktop\work\データ\csvtest.bat"
batFileName1 = "C:\Users\Aiba\Desktop\work\データ\csvtest 1.bat"
batFileName2 = "C:\Users\Aiba\Desktop\work\データ\csvtest 2.bat"
batFileName3 = "C:\Users\Aiba\Desktop\work\データ\csvtest 3.bat"

Set ShellObject = CreateObject("WScript.Shell")

'シェルの同時実行
ShellObject.Run batFileName, 1, False '1にするとコマンドプロンプトを通常表示 False だと非同期(バッチファイルの処理が終了するまで止まることはない)

ShellObject.Run batFileName1, 1, False
ShellObject.Run batFileName2, 1, False
ShellObject.Run batFileName3, 1, Flase

End Sub



以下はcsvdata.bat の中身です。
@echo off
REM 初期化
SET INPUTSTR=
REM SET /P part_name="検索するデータを入力してください。"


for /f "skip=1 tokens=1*" %%i in (data.csv) do (
echo データ=%%i
powershell -File parts_eol_test.ps1 %%i%
)
pause

A 回答 (1件)

問題点は2つあります。


1つはバッチファイル名が空白を含んでいることです。
その為
ShellObject.Run batFileName1, 1, False

"C:\Users\Aiba\Desktop\work\データ\csvtest 1.bat"
この時、C:\Users\Aiba\Desktop\work\データ\csvtestを起動し(拡張子がない場合、.batもしくは.exeが仮定される)
1.batがcsvtestへのパラメータとなってしまうことです。
csvtest.bat 1.bat
と同じことになります。

csvtest 1.batをcsvtest_1.batに変えてください。(2,3も同様)

2つめは、カレントディレクトリを
C:\Users\Aiba\Desktop\work\データ
にしていないことです。
ShellObject.Run前にC:\Users\Aiba\Desktop\work\データに移動する
必要があります。

修正すると
・・・途中省略・・・
batFileName = "C:\Users\Aiba\Desktop\work\データ\csvtest.bat"
batFileName1 = "C:\Users\Aiba\Desktop\work\データ\csvtest_1.bat"
batFileName2 = "C:\Users\Aiba\Desktop\work\データ\csvtest_2.bat"
batFileName3 = "C:\Users\Aiba\Desktop\work\データ\csvtest_3.bat"


ChDrive "C:"
ChDir "C:\Users\Aiba\Desktop\work\データ"

Set ShellObject = CreateObject("WScript.Shell")
・・・以降省略・・・
のようになります。
    • good
    • 0
この回答へのお礼

わかりやすい説明ありがとうございます!おかげさまで無事解決しました。本当に感謝です。

お礼日時:2020/11/26 08:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!