拡張子が .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/
【.cmd】 バッチファイルスクリプト %15 【.bat】
■ このスレッドは過去ログ倉庫に格納されています
2022/09/14(水) 20:04:01.36ID:XL8H98jz
329デフォルトの名無しさん
2023/06/13(火) 11:28:39.90ID:v41Gwse2 >>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" ~
こんな感じでいいのでは?
: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" ~
330デフォルトの名無しさん
2023/06/13(火) 13:37:35.35ID:lkLOH6hL 素直に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知ってるなら大丈夫だと思うけど
「を含む」じゃなくて「で始まる」なら>>329か「^」を付け「/c:"^co"」とかに。
: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知ってるなら大丈夫だと思うけど
「を含む」じゃなくて「で始まる」なら>>329か「^」を付け「/c:"^co"」とかに。
331デフォルトの名無しさん
2023/06/13(火) 13:47:29.71ID:lkLOH6hL 「&&」と「||」使うとこう。※記述量は減るがマイナー。
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")
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")
332デフォルトの名無しさん
2023/06/13(火) 16:32:40.78ID:3egukpPD 文字列に特定の文字列が含まれるかを見たいときに私なら
if not "%aaa%"=="%aaa:foo=%" (処理)
と、元の文字列の入った変数から特定の文字列を抜き取ったときに
イコールにならないことで含まれてることを判断してるんだけど
これってマイナーなのかな?
if not "%aaa%"=="%aaa:foo=%" (処理)
と、元の文字列の入った変数から特定の文字列を抜き取ったときに
イコールにならないことで含まれてることを判断してるんだけど
これってマイナーなのかな?
333デフォルトの名無しさん
2023/06/13(火) 18:38:43.90ID:lkLOH6hL >>329もその方法だし、マイナーって事はないと思う。
if文本体だとANDとかORを表現し辛くて自分はfindstrにしがち。
今回だと拡張子の条件(jpg, jpeg, webp, png?)のいずれかにマッチしたら目的の処理、
またはいずれにもマッチしなかったらgoto next_loop、みたいな場合に楽。
if文本体だとANDとかORを表現し辛くて自分はfindstrにしがち。
今回だと拡張子の条件(jpg, jpeg, webp, png?)のいずれかにマッチしたら目的の処理、
またはいずれにもマッチしなかったらgoto next_loop、みたいな場合に楽。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【W杯】日本と同組のオランダ5発完勝で暫定首位に ハクポ、ブロビーが2発 スウェーデンを圧倒★2 [ゴアマガラ★]
- 東京大阪都心のタワマン最上階 6割が現金一括購入 市場揺らす富裕層 [蚤の市★]
- 【W杯】采配ズバリ的中!ドイツ 途中出場ウンダフ2発で劇的逆転勝ち 3大会ぶり決勝T進出決めた 独2-1コ [征夷大将軍★]
- 大谷が「1番・指名打者」で産休から復帰 [しゃぶれよ★]
- 政府が称賛「日立の裁量労働制」のガッカリな実態 労働時間過少申告の会社圧力、記録ごまかす裏技 [蚤の市★]
- 【節約】物価高でも「食費月1万円」は可能? 月7000円台、レバーと100円キャベツで回す強者も★4 [ひぃぃ★]
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★120【メキシコ/カナダ/アメリカ】
- ハム専 気合入れていけ、ファイターズ
- 巨専】 祝勝会
- 【D専】Part.8
- おりせん
- 〓たかせん〓
- 【動画】高市早苗さん、誰と歓談してるのかガチで謎WWWWWWWWWWWWWWWWWWWWWWWW [685821185]
- 【悲報】大人気サッカー漫画『ブルーロック』 日本代表をバカにして批判殺到wwwwwwwwwwwwwwwwwwww [839150984]
- 【高市悲報】日本人の女性妊婦「産科に行ったら、中国人やネパール人の妊婦がいて不快感を覚えた」120万いいね [257926174]
- 【FIFAワールドカップ2026】F組オランダ×スウェーデン2:00(NHK1:45~,DAZN),E組ドイツ×コートジボワール5:00(日本テレビ4:40~,DAZN [226731781]
- ウンコエルフの体に糞塗りたくってゆめちゃんに食わす🤥💩🧚💩🏡
- 【観光】熊による経済損失、甚大らしい… [663277603]