バッチファイルを作成して、フォルダー内のすべてのファイルとサブフォルダーを削除する


0

最近、新しいNASをインストールし、以前と同じように「Temp」フォルダーを作成しようとしています。基本的には、勤務時間中にファイルを移動し、毎晩削除するために使用されるフォルダーです。

バッチファイルに関する私の知識は非常に限られています。別のウェブサイトでこれを見つけましたが、何とか動作させることができませんでした。うまくいけば、誰かが私がこれをどのように改善できるか、またはなぜ機能しないのかを説明できるかもしれません。

@echo off
rd "C:test" /F /Q

少し難しくするために、「この共有は毎日削除されます-重要なファイルを保存しない」という名前のサブフォルダーがあります。

このフォルダのすべてのファイルとサブフォルダを削除しても、上記の名前のサブフォルダを保持することはまったく可能かどうか疑問に思っていましたか?

どんな助けも本当に感謝されます。

ジェームス


削除するtestフォルダーがあり、Cドライブのルートフォルダーにあることを確認してください。また、使用しているWindowsのバージョンは何ですか?
boot13

テストの場所はC:\ testです。たぶん私は非常に明確な申し訳ありませんでした。基本的に2つのフォルダー。テスト後に、このバッチファイルがどの一時フォルダーに似ているかをテストします。テストの内部には、「この共有は毎日削除されます-重要なファイルを保存しない」フォルダーがあります。最上位レベルのテストフォルダー内には、他のファイル/フォルダーもあります。私がしたいことは、毎日真夜中に、すべてのファイルとフォルダーをテストから削除することです。[保存しない]フォルダのみを残します(可能な場合)。
JGreen

回答:


1

最初の質問では、/ F / Qではなく/ S / Qが必要だと思います。ECHO OFFコマンドの前に@を付けるだけでコマンド自体がエコーされないようにすることができます。

@RD "C:test" /S /Q

これにより、テストフォルダーとそのすべてのコンテンツが削除されます。これは、現在のC:の場所にあるテストフォルダーに対して実行されます(例のとおり)。

「テスト\この共有は毎日削除されます-重要なファイルを保存しない」フォルダーを保持する場合、これは機能するはずですが、フルパスを2回指定する必要があります-ここでは%USERPROFILE%を使用しています):

FOR /F "usebackq delims==" %i IN (`dir /b /s "%USERPROFILE%\test"`) DO @IF "%~i" NEQ "%USERPROFILE%\test\This Share is Deleted Daily - Do Not Store Important Files" @DEL /S /Q "%i" 2>NUL

もちろん、このようなコマンドには非常に注意する必要があります。有用、重要、または重要な何かを誤って消去する可能性があります。

もっと複雑なものを試したい場合は、cygwinをインストールし、目的を達成するためにbashスクリプトを作成することをお勧めします。bashはバッチよりもはるかに優れています!


迅速な回答ありがとうございます。正しく理解するために、最初の行-@RD "C:test" / S / Q-はテストファイルとその下のすべてを削除しますか?あなたが与えた2番目の答えは、テストとこの共有は毎日のフォルダーが削除されますが、テストの下にある他のすべてのフォルダーとファイルを削除しますか?迅速な対応ありがとうございまし
JGreen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.