特定のプレフィックスを持つファイルを除くフォルダ内のすべてのファイルを削除します

特定のプレフィックスを持つファイルを除くフォルダ内のすべてのファイルを削除します

アプリケーションによって自動生成されたファイルでいっぱいになっているフォルダーがあります。そこには csv および png 拡張子が作成され、保存されています。ファイル名が「abc-」で始まる特定の png ファイルを除くフォルダー内のすべてのファイルを削除する必要があります。システムは Windows Server 2012 R2 ボックスで、目標は毎晩タスク スケジューラを使用してバッチ ファイルでこれを実行することです。

事前に作成されたいくつかの異なるスクリプトを使用してみましたが、これらのプレフィックス付き png ファイルは除外されず、すべて削除されるだけです。どうすればよいでしょうか?

答え1

PowerShell を試していただけますか? たとえば次のようになります:

$path = "C:\site\temp"
gci -Path $path | ? {!($_.Name -ilike "abc-*.png")} | % { Remove-Item -Path $_.FullName }

答え2

Batch を使用すると、次のように実行できます。

@Echo OFF 

For %%# In ("*.*") DO (
    If /I "%%~x#" EQU ".png" (
        (Echo "%%~n#"| Findstr "^abc-")1>nul 2>&1 || (
            Del /Q "%%~#"
        )
    )
)


Pause&Exit

すべてのファイル (拡張子を持つ) を反復処理し、ファイルに「.png」拡張子がある場合は、ファイル名が「abc-」で始まるかどうかを評価して除外します。

テストする前にフォルダーのバックアップを行ってください。

答え3

また、テストを行う前に、作業中のフォルダーの内容をバックアップしてください。

ステップ 1: 問題のフォルダーの下にサブ ディレクトリを作成します。
ステップ 2: 保存するファイルをそのサブ ディレクトリに移動します。
ステップ 3: フォルダーに残っているものをすべて削除します。
ステップ 4: サブ ディレクトリのファイルをフォルダーに戻します。
ステップ 5: サブ ディレクトリを削除します。
ステップ 6: 何があるかを確認します。

簡単なスクリプトは以下のとおりです。

REM C:\SCRIPTS\MOVERPNG.CMD
C:
ECHO OFF
CLS
CD \SITE\TEMP 
MD BAR  
MOVE /y ABC-*.PNG \SITE\TEMP\BAR  
DEL /y *.PNG  
DEL /y *.CSV  
CD BAR  
MOVE *.PNG C:\SITE\TEMP 
CD ..  
RD /q BAR
ECHO MOVERPNG has completed.
DIR *.* /P /O:N 

関連情報