- ベストアンサー
vbsファイルにてaiueo.batを昨日の日付にて実行する方法について
vbsファイルにてaiueo.batを昨日の日付(2007 01 27)にて実行するため 下記のようなスクリプトファイルを作成しましたが、 最終行にてエラーにより処理が止まってしまいます。 置換の部分の処理にてエラーが発生しているのはわかっているのですが、 どのように修正を加えればよいのかがわかりません。 ご教授のほど、よろしくお願いします。 ----------------------------------------------------- Option Explicit Dim strValue ' 変換する文字列 Dim strBefore ' 変換前の文字列 Dim strAfter ' 変換後の文字列 strValue = Date() strBefore = "/" strAfter = " " Set wShell = CreateObject("WScript.Shell") Set oExecute = wShell.Exec(aiueo.bat Replace(Date() -1, strBefore, strAfter)) -----------------------------------------------------
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 aiueo.batの中では、引数をどのように処理しているのでしょうか。 aiueo.bat yyyy mm dd と引数を3つ渡して、バッチ内では%1,%2,%3で受け取っているのならうまくいくはずなのですが、コマンドプロンプトから直接上記コマンドを実行してうまくいくでしょうか。 もしaiueo.batの中で引数全体が1つとして扱われるのであれば、No.2の方の回答のように、"yyyy mm dd"となるようにする必要があります。 その辺の整合性がとれているか、確認してみてはいかがでしょうか。
その他の回答 (2)
- kurinkurinkurin
- ベストアンサー率72% (13/18)
自信ないです。外してたらごめんなさい。 コマンドライン引数は空白で区切られる性質があった気がします。 なので、空白を含むyyyy mm ddのような場合には、 "で囲む必要があるような。。。 試してないのでわかりませんが、次のコードはどうでしょう? ("と"の間で、""を入れると一文字の"として利用されます。) Set oExecute = wShell.Exec("aiueo.bat """ & Replace(Date() -1, strBefore, strAfter) & """")
- ham_kamo
- ベストアンサー率55% (659/1197)
Set oExecute = wShell.Exec(aiueo.bat Replace(Date() -1, strBefore, strAfter)) でなくて、 Set oExecute = wShell.Exec("aiueo.bat " & Replace(Date() -1, strBefore, strAfter)) ではないでしょうか。
補足
ご回答ありがとうございます。 教えて頂いた方法にて実行しました。 エラーは発生しませんでしたが、上記構文では"yyyy mm dd"という形式にでaiueo.batを実行しているように見受けられませんでした。 昨日の日付をyyyy mm ddにて取得、 --------------------- aiueo.bat yyyy mm dd --------------------- という形で実行したいのですが、 バッチファイルとVBSを利用して ほかに解決する方法がございましたら教えて頂けないでしょうか? よろしくお願いします。
お礼
ようやく原因がわかりました。 aiueo.bat と replace の間に" "が必要でした。 Set oExecute = wShell.Exec("aiueo.bat" & " " & Replace(Date() -1, strBefore, strAfter )) どうもありがとうございました。
補足
ご回答ありがとうございます。 >と引数を3つ渡して、バッチ内では%1,%2,%3で受け取っているのならうまくいくはずなのですが、 バッチ内では%1,%2,%3を受け取っております。 実際に直接コマンドを実行してうまくいきます。 教えて頂いたスクリプトを実行すると、 エラー 指定されたファイルが見つかりません。 とでて、下記行が指定されます。 Set oExecute = wShell.Exec("aiueo.bat" & Replace(Date() -1, strBefore, strAfter)) 原因が全く持って不明です。。