- ベストアンサー
【DOSコマンド】net useのデバイス名に*を指定した場合の動作について
●実現したいこと ネットワーク越しのとあるフォルダ内の全ファイルを 0バイトにクリアしたい。 ●実現出来た方法 rem 念のため、Zドライブを削除しておく。 net use Z: /delete /yes rem 該当フォルダをZドライブに割り当てる。 net use Z: \\(IPアドレス)\hoge\hoge\hoge rem カレントドライブをZドライブとする。 z: rem Zドライブ配下のファイルを全てクリアする。 for %%i in (*.*) do ( echo %%i type nul > %%i ) rem Zドライブ接続を削除する。 net use Z: /delete /yes exit ●問題点 Zドライブが別の接続で使われていた場合、エラーにならないか? ●解決案 ・net useのデバイス指定を「*」とする。 この場合、「net use *: /delete /yes」という文で 関係ない接続までdeleteされないでしょうか? ・あるいは「デバイス(ドライブレター)」を使わずに、 ダイレクトにとあるフォルダを指して、クリア出来ない でしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> ・あるいは「デバイス(ドライブレター)」を使わずに、 > ダイレクトにとあるフォルダを指して、クリア出来ない > でしょうか? ---ここから--- for %%i in (\\(IPアドレス)\hoge\hoge\hoge\*.*) do ( echo %%i type nul > %%i ) ---ここまで--- とやれば、ネットワークドライブに割り当てなくても処理できます。
その他の回答 (3)
> 「net use * /delete /yes」とやってしまうと、全接続が 自動的に切断されてしまうのでしょうか。 はい。全接続が切断されてしまいます。
お礼
ご回答ありがとうございます。 全接続が切断されますか。 ふぅ。やってみなくて良かったです。
No.1の訂正です。 「:」はコロンでした。(セミコロンは誤りです)
> 「net use *: /delete /yes」という文で 関係ない接続までdeleteされないでしょうか? 正確に書けば *: のようにセミコロン「:」をつけるとエラーになると思いますが...。実際に実行できているのでしょうか? なお、今回のテーマではありませんが、 割り当てる場合は、 net use * ..... のように「セミコロンなし」で自動的にドライブが割り当てられるはずです。 net use * /delete のように指定すれば、接続中のネットワークドライブが全て表示されて、切断するかどうかの「Y/N」の要求があるはずです。 したがって関係ない接続まで自動的に切断されることはないはずです。
補足
早々のご回答ありがとうございます。 申し訳ございません。「*:」は誤記です。 「Z:」は実行しましたが、「*」については実行しておりません。 「net use z: /delete 」については、自動的に切断させたいため、 「/yes」パラメータを付けています。 これを「net use * /delete /yes」とやってしまうと、全接続が 自動的に切断されてしまうのでしょうか。 (適切なテスト環境がなく、実験できません)
お礼
ご回答ありがとうございます。 まさに理想とする方法です。 (DOSコマンドに精通された方にとっては常識的な 処理なのかも知れませんが) 採用させて頂きます。 重ね重ねありがとうございました。