Windows 7の指定したフォルダーのコンテンツ全体をバッチファイルで削除したい。私の問題は、「del」または「erase」はファイルではなくフォルダーのみを削除し、「rmdir」または「rd」は指定されたフォルダーとそのコンテンツを常に削除するが、フォルダー自体ではなくコンテンツのみを削除することです。コマンド「rmdir /S /Q "C:\Share\*"
'構文エラーが発生しました。
これを行う正しい方法は何ですか?
私はWindows 7 Professional 64ビットで作業しており、管理者権限を持っています。
バッチファイルは2つのコマンドを実行する必要があります。1つはファイルをクリアするため、もう1つは子ディレクトリを削除するためです。削除するディレクトリはC:\Share\
バッチファイルは次のようになります。
del /s /f /q c:\share\*.*
for /f %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f
del /s /f /q
は、確認を求めずにディレクトリツリー全体を再帰的に検索し、すべてのファイル(読み取り専用ファイルも含む)を削除します。
2行目はすべてのサブディレクトリ(現在は空であるはずです)をループして削除します。
フォルダー全体を削除して再作成する(アクセス許可のために実行したくないと思いますか?)以外の方法は、フォルダーを一掃する最も簡単な方法です。
rmdir /s/q C:\Share
rmdir
は完全名のみを受け入れ、ワイルドカードは受け入れないため、「構文エラー」が発生します。 (cmd.exe
では、ワイルドカードの展開は個々のプログラムに任されています。すべてがそうであるわけではありません。)
Share...
で始まる多くのディレクトリがある場合は、for
ループを使用します。
for /d %f in (C:\Share*) do rmdir /s/q "%f"
コマンドプロンプトでこれを試してください:
rd /s/q "C:\Share"
for /f "delims=" %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f
サブディレクトリにスペースを含む他のディレクトリが含まれている場合、これは機能しません。
これを機能させるために、私はこのように最後の文字列を引用する必要がありました
/ f "delims =" %% f in( 'dir/ad/b c:\ share \')の場合、rd/s/q 「c:\ share\%% f」
どうやら、これによりコマンドは、文字列そのものではなく、引用符で囲まれた文字列で動作します。
どうですか?
rmdir /S /Q "target"
mkdir "target
編集:もちろん、このソリューションは、一時的なフォルダの不在を許容できる場合にのみ適用できます。
単に:
rmdir/s/q "パス"
mkdir "パス"
すべてのサブフォルダーを削除する必要がありますが、ルート(およびルート内のファイル)はそのままにしたフォルダーでこれを試します:/ D%v in(*)do rd/s/q%v
/ Dはディレクトリに一致し、rd/s/qは一度に1つずつ削除します