特定のファイルが含まれていない場合にフォルダーを削除するバッチファイル


2

サブフォルダーがたくさんあるフォルダーがあります。サブフォルダーのリストを調べて、指定されたファイルが存在するかどうかを確認するバッチファイルが必要です。ファイルが存在しない場合、サブフォルダを削除できます。

これは、Windows 7ワークステーションで実行する必要があります。

for / fおよび存在する場合、コマンドで構文が混同されています。

for /f /f%% in ('dir /b c:\test') do if exist "test.txt" rename c:\test\%% tobedeleted

私は1つの議論で多くのことをしようとしているか、重要な何かを見逃していると思います。

回答:


1

ファイルが存在しない場合、サブフォルダを削除できます。

次のようなものが必要です。

echo off
setlocal enableDelayedExpansion
for /f %%i in ('dir /a:d /b /s c:\test') do (
  set _dir=%%i
  if exist !_dir!\test.txt (
    rem do nothing
    ) else (
    echo rd !_dir!
    )
  )
endlocal

ノート:

  • 正しいディレクトリが削除されることが確実な場合は、echo前をrd削除します。
  • ディレクトリにサブディレクトリが含まれ/sているrd場合に追加します。
  • に追加/qrdて、Y / Nの確認を削除します。

参考文献

  • Windows CMDコマンドラインのAZインデックス -Windowsのcmdラインに関連するすべてのものに関する優れたリファレンス。
  • dir-ファイルとサブフォルダーのリストを表示します。
  • 場合 -条件付きでコマンドを実行します。
  • enabledelayedexpansion-遅延展開により、解析時ではなく実行時に変数が展開されます。
  • RD -削除フォルダ(複数可)。
  • for / f-別のコマンドの結果に対してコマンドをループします。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.