路傍のプログラマ

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

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

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$_@

としています。

最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
防止策その2 (とおりすがり)
2007-08-02 14:16:35
読み取り専用属性をつけるのが確実だと思います
返信する
re: 防止策その2 (あのい)
2007-08-03 00:28:41
コメントありがとうございます。

読み取り専用属性なら、確実ですね。

そういわれれば、あんまり属性を変えたりしたことないなあ。

多分、コピーやら何やらのときに、いちいちダイアログが開くのが面倒なので、属性の変更を避ける習慣がついてしまったのだと思います。

今回の事故は、面倒くさがりな性格が災いしたのかもしれませんね。面目ない。
返信する