- ベストアンサー
ネットワークドライブのファイル削除
- ネットワークドライブのファイル削除についての質問です。
- ネットワークドライブに割り当てたフォルダからファイルが削除されてしまいました。
- バッチファイルの実行時にデスクトップ上のファイルが消えました。なぜでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
pushdコマンドのパスが見つからない(ネットワークが存在しない場合も同様)のでカレントディレクトリは変化しない。 そのまま次のdelコマンドを実行 という流れです。 バッチファイルがデスクトップにあればバッチの起動時のカレントディレクトリはデスクトップになるのでデスクトップのファイルは削除されます。 また一部のファイルが残った理由はデスクトップの実態は複数に分かれている(個人用と共通用)いて 普通にデスクトップに作れば個人用に入りますが、ソフトのインストール等で作られたショートカットは共通用に入ることがありますので、 共通用にあったファイルは残ったのだと思います。
その他の回答 (2)
- EF_510
- ベストアンサー率50% (306/604)
バッチの成果としては、Dドライブの中身とネットワークの向こうにあるディレクトリを同期したいと言うことでしょうか? WindowsVista以降をご使用であればrobocopyを使用されるとスマートかもしれません。 このバッチはpushdの結果に関わらずカレントディレクトリに無条件削除を実行していますので危険ですね。 pushdの結果を確認してエラーなら止めてしまえば良いので… >pushd \\test\shared\aaaaa\bkup if ERRORLEVEL 1 exit >del /F/S/Q *.* >for /D %%f in ( * ) do rmdir /S/Q "%%f" >xcopy /E/H/R/K/Y "D:\*" \\test\shared\aaaaa\bkup\ 一行追加して止めてしまうだけでも防ぐことができます。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
あ~、やっちゃいましたね。 こういうバッチでは、以下のように、消すべき場所に絶対パス指定で番兵ファイルを作ってみて、番兵ファイルが正しく作れたか調べる必要があります。 echo 番兵 > \\test\shared\aaaaa\bkup\KEYFILE.$$$ pushd \\test\shared\aaaaa\bkup if not exist KEYFILE.$$$ goto QUITBAT del /F/S/Q *.* for /D %%f in ( * ) do rmdir /S/Q "%%f" xcopy /E/H/R/K/Y "D:\*" \\test\shared\aaaaa\bkup\ :QUITBAT こうすると、echoやpushdに失敗してカレントディレクトリにKEYFILE.$$$が無い状態では、何もしません。
お礼
バッチはデスクトップに置いています。 それでカレントがデスクトップのまま削除されたのですね。 ありがとうございます。 パブリックのデスクトップにあるショートカットが残っていたようです。 ただ、SPの実行ファイルはユーザーに置いてあったのですが、こちらは プロパティを見ると、セキュリティでブロックされていたからかもしれません。