日頃、VBScript なんか全然触らないんだけど、一年に一度くらい、触らなきゃいけないことがある。
今週、正にその稀なケースが勃発した。
お客さんのサーバをリプレースして、元々古いサーバで動いていた VBScript(作ったのは俺に非ず)をそのまま移したんだけど、このスクリプトが謎の異常終了をする。
結局、あれこれ調査はしてみたけど原因不明。
おかげで、同じ機能のスクリプトを作成しないといけないハメになった。
ほんま、久しぶりだ。去年の春ぐらいに触って以来だ。
なので、つまんないところでハマっちゃった(^^;;;
スクリプト内から、DOS のコマンドを実行するのだが、
Return = WshShell.Run("xcopy " & fFolder & " " & tFolder & " /e /c /i /q /h /k /y", 0, true)
は問題なく実行されるのに、
Return = WshShell.Run("rd /s /q " & fFolder, 0, true)
は「エラー:指定されたファイルが見つかりません。 コード:80070002」っていうエラーになる。
fFolder に正しくフォルダー名がセットされてないのか!?っと思って色々調べてみたが、それは正しくセットされている。なんでぇ???・・・と思ってたら、本当に rd という実行ファイル(rd.exe or rd.com)が存在していない話だった(^^;
そう、rd はコマンドプロンプト(cmd.exe)の内部コマンドだったんだね。知ってたけど忘れてた(^^;
つーことで、
Return = WshShell.Run("cmd /c rd /s /q " & fFolder, 0, true)
みたいに、/c オプションで実行する内部コマンド(rd)を指定して、cmd を実行すればよかったんだね。
すっかり「見つからないファイル」というのが、fFolder のセットされているフォルダーのことなんだろうと思い込み、そこばっか調査してたんで、2時間近くこのせいで棒に振ったよ(^^;;
ま、これでまたしばらく VBScript を触ることもないので、またも次回、同じような内容で悩むんだろうな(^^;