路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

スクリプトファイル消失ミステリー(後編)

2007-07-27 22:13:20 | プログラミング
スクリプトが消失した理由は、分かってみれば単純でした。

コマンドプロンプトからコマンドラインをコピーするとき、プロンプトの部分もコピーしていたため、プロンプトの最後の「>」がリダイレクトとして働いたわけです。

つまり、

c:\hoge>fuga.bat param1 param2 param3

というふうに実行したあと、この行を丸ごとコピー&ペーストしてしまったので、

c:\hoge>c:\hoge>fuga.bat param1 param2 param3

となったわけす。シェル(cmd.exe)くんの解釈では、これは、

「c:\hoge」を実行して、その結果を「fuga.bat」に格納して、なんたらかんたら、

という意味になります。

後の展開はご想像通り。

「c:\hoge」は単なるディレクトリなので、実行できない → 標準出力には何も出てこない → 空文字列でファイル「fuga.bat」を上書き。

今回の教訓。

環境変数promptをデフォルトのまま使うのはちと危険。

私の場合、この事故以来、システムの環境変数の設定で、

prompt=$d$s$t$s$+$s$p$_@

としています。