約 50 個の異なるファイル (NAME1.jpg、NAME2.jpg、NAME3.jpg...) が入ったフォルダーがあります。
実行するプログラムがあり、各ファイルを約 4 つの異なるファイルに分割し、名前を変更します (NAME1-0.jpg、NAME1-1.jpg、NAME2-0.jpg、NAME2-1.jpg...)
*-0.jpg ファイル以外のすべてのファイルを実行して削除する .bat ファイルを作成したいと思います。
これまでのところ、私が最も近づいたのは次の行です。
for %i in (*) do if not %i == "*.jpg" del "%i"
しかし、これは保存したい -0.jpg を含むフォルダー内のすべてのファイルを削除します。
もっと良いラインはありますか?
答え1
*-0.jpg ファイル以外のファイルをすべて削除したい。
実行するプログラムがあり、各ファイルを約 4 つの異なるファイルに分割し、名前を変更します (NAME1-0.jpg、NAME1-1.jpg、NAME2-0.jpg、NAME2-1.jpg...)
次のバッチ ファイル (test.cmd) を使用します。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b NAME?-?.jpg') do (
rem get file name
set _fname=%%~ni
rem get last 2 characters of file name
set _last2=!_fname:~-2!
if [!_last2!] NEQ [-0] del "%%i"
)
例:
F:\test>dir *.jpg
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
08/12/2015 23:51 0 NAME1-0.jpg
08/12/2015 23:51 0 NAME1-1.jpg
08/12/2015 23:51 0 NAME2-0.jpg
08/12/2015 23:51 0 NAME2-1.jpg
4 File(s) 0 bytes
0 Dir(s) 1,776,919,613,440 bytes free
F:\test>test
F:\test>dir *.jpg
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
08/12/2015 23:51 0 NAME1-0.jpg
08/12/2015 23:51 0 NAME2-0.jpg
2 File(s) 0 bytes
0 Dir(s) 1,776,919,613,440 bytes free