拡張子が .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
2デフォルトの名無しさん
2022/09/16(金) 00:28:41.18ID:9kvq1ahn 助けてください。
変数HOGEをキー入力してsplit()的な区切り文字列で分割する挙動を取りたいのですが
なぜかファイルが見つかりませんとなります。
リテラルでSET HOGE=1,2,3と記述していれば希望の動作となります。
半日困って今日は会社にお泊りです。誰か教えてください。
REM キー入力でHOGEに"1,2,3"と入力する
SET /P HOGE=
FOR /f "tokens=1,2 delims=," %%a in (%HOGE%) do (
ECHO %%a %%b %%c
)
OUTPUT ファイル 0_0 がみつかりません。
変数HOGEをキー入力してsplit()的な区切り文字列で分割する挙動を取りたいのですが
なぜかファイルが見つかりませんとなります。
リテラルでSET HOGE=1,2,3と記述していれば希望の動作となります。
半日困って今日は会社にお泊りです。誰か教えてください。
REM キー入力でHOGEに"1,2,3"と入力する
SET /P HOGE=
FOR /f "tokens=1,2 delims=," %%a in (%HOGE%) do (
ECHO %%a %%b %%c
)
OUTPUT ファイル 0_0 がみつかりません。
3デフォルトの名無しさん
2022/09/16(金) 00:29:57.20ID:9kvq1ahn FOR /f "tokens=1,2,3 delims=," %%a in (%HOGE%) do (
ECHO %%a %%b %%c
)
の間違いでした。だれか助けて〜
ECHO %%a %%b %%c
)
の間違いでした。だれか助けて〜
2022/09/16(金) 00:32:46.68ID:/mniU0r8
for /?
for /f
(ファイル)
("文字列")
('コマンド')
for /f
(ファイル)
("文字列")
('コマンド')
5デフォルトの名無しさん
2022/09/16(金) 00:42:16.15ID:9kvq1ahn6デフォルトの名無しさん
2022/09/25(日) 20:41:32.40ID:0LVDTkG9 set /a hoge1=%random%
set /a hoge2=%random%
set /a hoge3=%hoge1%+%hoge2%
echo %hoge3%
hoge3のところには単に「+」と表示され、
echoのところにはなにも表示されず、
その次に「オペラントがありません」と表示されます。
これはなにが起こっているのでしょうか…
set /a hoge2=%random%
set /a hoge3=%hoge1%+%hoge2%
echo %hoge3%
hoge3のところには単に「+」と表示され、
echoのところにはなにも表示されず、
その次に「オペラントがありません」と表示されます。
これはなにが起こっているのでしょうか…
2022/09/26(月) 00:15:07.76ID:7oxCYWvG
if とか for のブロックの中?
https://otnx.jp/CMD/?%C1%B4%C8%CC/%B9%BD%CA%B8%B2%F2%C0%CF
https://otnx.jp/CMD/?%C1%B4%C8%CC/%B9%BD%CA%B8%B2%F2%C0%CF
8デフォルトの名無しさん
2022/09/26(月) 00:46:39.21ID:ou4YDIZU >>7
御明察です!理由が分かって安心しました。ありがとうございます。
forループの中で、このような処理を書くことはできないのでしょうか。毎回ランダムで少し変えて実行する、という処理を書きたいのですが…
御明察です!理由が分かって安心しました。ありがとうございます。
forループの中で、このような処理を書くことはできないのでしょうか。毎回ランダムで少し変えて実行する、という処理を書きたいのですが…
2022/09/26(月) 01:01:52.99ID:3mhNpNjH
for文の展開で解釈が一回多く入るから1回目の解釈後も環境変数として残すようにする
%%hoge%% → %hoge% → 環境変数hogeの中身に置換
上の方法はトリッキーなので正規には遅延環境変数展開を使う(setlocal /?)
setlocal EnableDelayedExpansion
%%hoge%% → %hoge% → 環境変数hogeの中身に置換
上の方法はトリッキーなので正規には遅延環境変数展開を使う(setlocal /?)
setlocal EnableDelayedExpansion
10デフォルトの名無しさん
2022/09/26(月) 01:47:37.41ID:ou4YDIZU >>9
ありがとうございます!できました!
setlocal enabledelayedexpansion
forループの初め
set /a hoge1=%random%
set /a hoge2=%random%
set /a hoge3=!hoge1!+!hoge2!
echo !hoge3!
forループの終わり
という風にしたら、動きました。
デフォルトではforループ全体が一気に読み込まれるので、変数への代入が実行される前に変数の内容が確定してしまうという仕様なんですね。それを回避するために、!を付けて展開遅延変数を用いる、ということですね。
ただ、ランダムにしたはずなのに、毎回同じ値が表示されますね…
何故…
ありがとうございます!できました!
setlocal enabledelayedexpansion
forループの初め
set /a hoge1=%random%
set /a hoge2=%random%
set /a hoge3=!hoge1!+!hoge2!
echo !hoge3!
forループの終わり
という風にしたら、動きました。
デフォルトではforループ全体が一気に読み込まれるので、変数への代入が実行される前に変数の内容が確定してしまうという仕様なんですね。それを回避するために、!を付けて展開遅延変数を用いる、ということですね。
ただ、ランダムにしたはずなのに、毎回同じ値が表示されますね…
何故…
2022/09/26(月) 01:54:43.87ID:yGyQXERn
%random%
じゃなくて
!random!
じゃなくて
!random!
2022/09/26(月) 05:19:01.77ID:L5dyrqoL
そういえば、181系って、完全に揃った編成ってあったんだろうか?
台車違いの編入車や、485系仕様の編入車・新製車とかで、
いつも凸凹でちぐはぐだったイメージしかない
もし、153系の前面が165系の塗りになったら
足回りとか見慣れた目にはやっぱり違和感あるんだろうなぁ
クハ164は塗装変更しないで正解だったと思うわ
台車違いの編入車や、485系仕様の編入車・新製車とかで、
いつも凸凹でちぐはぐだったイメージしかない
もし、153系の前面が165系の塗りになったら
足回りとか見慣れた目にはやっぱり違和感あるんだろうなぁ
クハ164は塗装変更しないで正解だったと思うわ
2022/09/26(月) 05:19:38.74ID:L5dyrqoL
誤爆失礼!
2022/09/26(月) 11:49:53.74ID:7oxCYWvG
>>10
set /a hoge1=!random!, hoge2=!random!, hoge3=hoge1+hoge2
set /a は , 区切りで複数の式を指定可
環境変数は展開せずとも計算可能。その場合存在しない変数名は0として扱われ、展開した場合(多くはエラーになる)とは違ってくるので意図した計算になっていない事に気付き難い事に注意が必要
random などの特殊環境変数は環境変数としては存在せず、展開時に代入されるので展開が必要
setlocal enabledelayedexpansion
for /L %%i in (1,1,4) do (
set /a a=!random!, b=!random!, c=a+b
echo !c!
)
pause
こんな風にも書ける
set /a c=(a=!random!)+(b=!random!)
echo !a! + !b! = !c!
「遅延環境変数」という名称はそういう変数が別にあるのかと紛らわしくて良く無いと思うわ
環境変数
特殊変数
標準展開、事前展開、%展開 (展開されてから構文解析)
遅延展開、!展開 (構文解析されてからコマンド実行直前に展開)
用いるなら「環境変数の遅延展開」だろう
set /a hoge1=!random!, hoge2=!random!, hoge3=hoge1+hoge2
set /a は , 区切りで複数の式を指定可
環境変数は展開せずとも計算可能。その場合存在しない変数名は0として扱われ、展開した場合(多くはエラーになる)とは違ってくるので意図した計算になっていない事に気付き難い事に注意が必要
random などの特殊環境変数は環境変数としては存在せず、展開時に代入されるので展開が必要
setlocal enabledelayedexpansion
for /L %%i in (1,1,4) do (
set /a a=!random!, b=!random!, c=a+b
echo !c!
)
pause
こんな風にも書ける
set /a c=(a=!random!)+(b=!random!)
echo !a! + !b! = !c!
「遅延環境変数」という名称はそういう変数が別にあるのかと紛らわしくて良く無いと思うわ
環境変数
特殊変数
標準展開、事前展開、%展開 (展開されてから構文解析)
遅延展開、!展開 (構文解析されてからコマンド実行直前に展開)
用いるなら「環境変数の遅延展開」だろう
2022/09/26(月) 12:58:23.71ID:3mhNpNjH
英語だと
delayed expansion
delayed variable expansion
説明文的には
Enables the delayed environment variable expansion
Setting EnabledDelayedExpansion will cause each variable to be expanded at execution time rather than at parse time
delayed expansion
delayed variable expansion
説明文的には
Enables the delayed environment variable expansion
Setting EnabledDelayedExpansion will cause each variable to be expanded at execution time rather than at parse time
2022/09/26(月) 17:38:32.28ID:dNpEj5o9
set /a a=random
は0なんやな
一般変数と処理が違うんだ
は0なんやな
一般変数と処理が違うんだ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「仮に夫婦が落としていても…」5歳児が家族風呂から行方不明、過熱するSNSの“犯人視” 弁護士が警告 [七波羅探題★]
- 明石家さんま、W杯特番対談で日本代表選手を「お前」呼びで物議…自分語り連発の “バラエティノリ” に募る疑問 [王子★]
- 東海道新幹線で「当日出発・翌朝到着」の夜行新幹線8月運行 途中駅で夜間に長時間停車 東京−新大阪を約9時間 [七波羅探題★]
- 「顔が激変した。それが全てだと思った」裁判員が記者会見 内田梨瑚被告への印象語る [パンナ・コッタ★]
- 高市首相と秘書を刑事告発 パー券売り上げなど虚偽記載で 裏帳簿情報も検察に提供 [少考さん★]
- 「〇国」と590万回も叩かれた岩屋毅議員が激白、ネットのデマに歪められる民主主義の危機に「保守政治家」が取るべき道 ★2 [少考さん★]
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★145【メキシコ/カナダ/アメリカ】
- 西武線12
- 〓たかせん〓
- かもめせん
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★144【メキシコ/カナダ/アメリカ】
- こいせん 全レス転載禁止
- 【高市早苗】国籍透視メガネ保有者「この"京都産"九条ねぎと書いてる商品、中国産です。」👈大当たりで社長逮捕 [165981677]
- 【高市悲報】ウクライナ、日立と東芝に数十億円出せと要求してしまう🥹 [616817505]
- マッサージは医療ではなく気持ちいいからやるの
- 女の子「抜けなくなっちゃった」←これ
- フランスのテレビでサッカー見てるわNHKざまぁぁぁあ
- 明日元いた部署の可愛い女の子に会いに行って良いか?