ファイルを削除するバッチスクリプト


96

次のようなバッチスクリプトがあります。

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

上記のコードは、フォルダーを除くすべてのフォルダーからすべての「.txt」および「.tsv」ファイルを削除しますTEST 100%。からファイルを削除すると、TEST 100%エラーが発生しThe Path could not be foundます。フォルダ名の%記号が問題を引き起こしていると思います。誰かが問題を解決してフォルダからファイルを削除するように私を案内できますTEST 100%か?


なぜ最初の行に引用があるのですか?また、バッチファイルが最初の行で既にそのドライブに変更されているのに、なぜドライブを参照しているのですか?私はあなたの問題を再現してみましたが、すべてうまくいきました。アーカイブがテストに100%存在することを確認しましたか?
RonaldBarzell

回答:


112

別のもので%をエスケープする必要があります...

del "D:\TEST\TEST 100%%\Archive*.TXT"

私はOPについて話すことはできませんが、私のシステムでは%でパスを見つけることに問題はなく、%%でエスケープするとシステムがそれを見つけられなくなります。
RonaldBarzell

@ user1161318-Windows 7でテストしました。エスケープしないと、バッチファイルで「指定されたパスが見つかりません」という結果になります。投稿したとおりに動作します。
Russ Freeman

OK、XPでは反対の結果になります。%でパスを正常に検出しますが、%%でパスを検出できません。
RonaldBarzell

5
私の推測では、バッチファイルからではなく、コマンドプロンプトから実行しています。
Russ Freeman

2
あなたはおそらく正しいです。バッチファイル内では、%は可変プレフィックスであり、エスケープする必要があることを忘れてしまいます。+1
ロナルドバーゼル

12

バッチ処理を行うには複数の方法があるため、2パーセントでエスケープして%%もうまくいかない場合は、次のような方法を試してください。

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

仕組み:

set olddir=%CD%変数"olddir"またはその他の変数名を、バッチファイルの起動元のディレクトリに設定します。

cd /d "path of folder"バッチが参照する現在のディレクトリを変更します。引用符を保持し、目的のパスにフォルダーのパスを変更します。

del "file name/ or *.txt etc..."バッチが参照している現在のディレクトリ内のファイルを削除します。ファイル名の前にディレクトリパスを追加せず、完全なファイル名を指定するか、同じ拡張子*.txtまたは必要な拡張子を持つ複数のファイルを削除します。

cd /d "%olddir%"古いパスで保存された変数を受け取り、バッチを開始したディレクトリに戻ります。バッチを以前のディレクトリパスに戻したくない場合は重要ではありません。変数名をあなたが変更することによってあなたが望むものは何でもset olddir=%CD% line


これはを介して行うのが最適pushd "folder" && del "filename" & popdです。
ヌーノアンドレ

10

ソフトウェアをデスクトップに保存したとしましょう。
アンインストーラープログラムのようにフォルダー全体を削除する場合は、これを使用できます。

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

これにより、ソフトウェアと呼ばれるフォルダー全体とそのすべてのファイルとサブフォルダーが削除されます

正しいフォルダを削除したことを確認してください。これにははい/いいえのオプションがないためです


4

削除する必要があるファイルに拡張子txtがあり、場所D:\My Folderにあることを考慮してください。バットファイル内で以下のコードを使用できます。

cd "D:\My Folder"
DEL *.txt 

-7

バッチコードでは、パスにスペースを含めないでください。そのため、plsはフォルダー名を「TEST 100%」から「TEST_100%」に変更し、新しいコードは「D:\ TEST \ TEST_100%\ Archive * .TXT」になります。

これがあなたの問題を解決することを願っています


6
聞いたことがない。それは新しいですか?-皮むき。引用符で囲んでいる限り、スペースなしでも機能します。
Blacktempel 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.