DEL *.* でファイルを全部消してしまうバグをWindows環境で防止する
RHEL6でsquidを再起動するとrm -rf /*が実行されるバグが発見される | スラド
Steam for Linuxのバグ、予期せぬ「rm -rf "/"*」 | スラド
これ、 Linux 系ではよく見かける不具合だけど、 Windows ではあまり聞かない。
でも、実は似たようなことが起こる可能性がある。
次のようなバッチファイルを実行したとしよう
@echo off cd C:\Windows\system32\Temp for %%i in (*.EXE) do ( del /F /Q "%%i" ) |
どうなるだろうか?
C:\Windows\system32\Temp が存在するのならばいいのだが、存在しない場合、
フォルダの移動に失敗して、カレントフォルダが削除対象になってしまう
管理者権限で実行すると %SystemRoot%\System32 がカレントフォルダになってしまう
これは危険だ・ω・
ではどうすればいいか?
@echo off cd C:\Windows\system32\Temp if not "%ERRORLEVEL%" == "0" ( echo フォルダがないにゃん pause ) else ( for %%i in (*.EXE) do ( del /F /Q "%%i" ) ) |
CDの直後の成否を判断するために
ERRORLEVEL でチェックしてやればいいのだ。
失敗していれば何も実行しなければOK
2000の場合は、
\WINNT\
ですよね?XPも同じ?
del *.*と入力してもごみ箱に入るとか期待したのですが^^;
>可能性がある
これかもしれない
***p://www.fujixerox.co.jp/company/news/notice/2014/0314_dw.html