【.cmd】 バッチファイルスクリプト %15 【.bat】 (768レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
330(1): デフォルトの名無しさん [sage] 2023/06/13(火) 13:37:35.35 ID:lkLOH6hL(1/3) AAS
素直にif文書くとこんなん。※インデントは全角スペース
:loop_begin
if "%~1" == "" goto loop_end
echo,%~nx1| findstr /ri /c:"co" >nul 2>nul
if not errorlevel 1 (
cov.exe "%~dpnx1"
) else (
echo,%~nx1| findstr /ri /c:"auto" >nul 2>nul
if not errorlevel 1 (
auto.exe "%~dpnx1"
) else (
echo,%~nx1| findstr /ri /c:"rec" >nul 2>nul
if not errorlevel 1 (
rec.exe "%~dpnx1"
)
)
)
shift & goto loop_begin
:loop_end
Perl知ってるなら大丈夫だと思うけど
「を含む」じゃなくて「で始まる」なら>>329329(3): デフォルトの名無しさん [sage] 2023/06/13(火) 11:28:39.90 ID:v41Gwse2(2/2) AAS
>>328
こんな感じでいいのでは?
:loop
set fname=%~1
shift
if not defined fname goto :eof
if "%fname:~0,2%" equ "ac" "c:\cov.exe" ~
if "%fname:~0,2%" equ "au" "c:\auro.exe" ~
timeout 1
goto :loop
又は
if "%fname:ac=%" neq "%fname%" "c:\cov.exe" ~
か「^」を付け「/c:"^co"」とかに。
331(2): デフォルトの名無しさん [sage] 2023/06/13(火) 13:47:29.71 ID:lkLOH6hL(2/3) AAS
「&&」と「||」使うとこう。※記述量は減るがマイナー。
echo,%~nx1| findstr /ri /c:"co" >nul 2>nul && (
cov.exe "%~dpnx1"
) || (
echo,%~nx1| findstr /ri /c:"auto" >nul 2>nul && (
auto.exe "%~dpnx1"
) || (
echo,%~nx1| findstr /ri /c:"rec" >nul 2>nul && (
rec.exe "%~dpnx1"
)
)
)
フラグ使うとこう。
set result=
for %%A in (rec auto co) do (
echo,%~nx1| findstr /ri /c:"%%A" >nul 2>nul && set result=%%A
)
if "!result!" == "co" cov.exe "%%~dpnx1"
if "!result!" == "auto" auto.exe "%%~dpnx1"
if "!result!" == "rec" rec.exe "%%~dpnx1"
複数マッチする事がない、または複数マッチして複数実行してよいなら
バッチにディレクトリパス渡してこう。(gotoのループ無し)
for %%A in ("%~1\*co*") do (cov.exe "%%~A")
for %%A in ("%~1\*auto*") do (auto.exe "%%~A")
for %%A in ("%~1\*rec*") do (rec.exe "%%~A")
333(1): デフォルトの名無しさん [sage] 2023/06/13(火) 18:38:43.90 ID:lkLOH6hL(3/3) AAS
>>329もその方法だし、マイナーって事はないと思う。
if文本体だとANDとかORを表現し辛くて自分はfindstrにしがち。
今回だと拡張子の条件(jpg, jpeg, webp, png?)のいずれかにマッチしたら目的の処理、
またはいずれにもマッチしなかったらgoto next_loop、みたいな場合に楽。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.413s*