cmd.exe の内部コマンドだとか、すっかり忘れてたぜ

日頃、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 を触ることもないので、またも次回、同じような内容で悩むんだろうな(^^;

トラックバック(0)

このブログ記事を参照しているブログ一覧: cmd.exe の内部コマンドだとか、すっかり忘れてたぜ

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1825

コメントする

このブログ記事について

このページは、shinodaが2011年10月28日 15:37に書いたブログ記事です。

ひとつ前のブログ記事は「「わたしの食卓」の定食はやっぱ美味いなあ・・・」です。

次のブログ記事は「夕べは「寅卯」で熱燗をやって風邪を吹き飛ばしたのである」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら