1 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 20:04:01.36 ID:XL8H98jz.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう 過去スレ %14 https://mevius.5ch.net/test/read.cgi/tech/1597442426/ %13 https://mevius.2ch.net/test/read.cgi/tech/1542779527/ %12 https://mevius.2ch.net/test/read.cgi/tech/1489207631/ %11 https://echo.2ch.net/test/read.cgi/tech/1424858999/ %10 https://peace.2ch.net/test/read.cgi/tech/1374205515/ %9 https://toro.2ch.net/test/read.cgi/tech/1335015478/ %8 https://toro.2ch.net/test/read.cgi/tech/1315844420/ %7 https://hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 https://hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 https://pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 https://pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 https://pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 https://pc11.2ch.net/test/read.cgi/tech/1197881068/ 【.cmd】 バッチファイルスクリプト %1 【.bat】 https://pc11.2ch.net/test/read.cgi/tech/1178281991/ バッチファイルプログラミング 3.bat https://pc11.2ch.net/test/read.cgi/tech/1148485555/ バッチファイルプログラミング 2.bat https://pc8.2ch.net/test/read.cgi/tech/1104911889/ バッチファイルプログラミング質問スレ https://pc5.2ch.net/test/read.cgi/tech/1040614686/
328 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 11:28:39.90 ID:v41Gwse2.net] >>327 こんな感じでいいのでは? :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" ~
329 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 13:37:35.35 ID:lkLOH6hL.net] 素直に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知ってるなら大丈夫だと思うけど 「を含む」じゃなくて「で始まる」なら>>328 か「^」を付け「/c:"^co"」とかに。
330 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 13:47:29.71 ID:lkLOH6hL.net] 「&&」と「||」使うとこう。※記述量は減るがマイナー。 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")
331 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 16:32:40.78 ID:3egukpPD.net] 文字列に特定の文字列が含まれるかを見たいときに私なら if not "%aaa%"=="%aaa:foo=%" (処理) と、元の文字列の入った変数から特定の文字列を抜き取ったときに イコールにならないことで含まれてることを判断してるんだけど これってマイナーなのかな?
332 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 18:38:43.90 ID:lkLOH6hL.net] >>328 もその方法だし、マイナーって事はないと思う。 if文本体だとANDとかORを表現し辛くて自分はfindstrにしがち。 今回だと拡張子の条件(jpg, jpeg, webp, png?)のいずれかにマッチしたら目的の処理、 またはいずれにもマッチしなかったらgoto next_loop、みたいな場合に楽。