[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
852: 2018/10/05(金)18:28 ID:hOPHqLcn(1) AAS
>>850
何か問題が?
goto :endとかより遥かにいいと思うが
853: 2018/10/05(金)18:33 ID:Iu01kfl1(5/6) AAS
goto その物が多いとか言われた事も
854: 2018/10/05(金)18:46 ID:vSWfZutq(4/4) AAS
自分だと大抵

{メインルーチン}
goto :EOF

:sub1
{サブルーチン12}
exit /b

:sub2
{サブルーチン}
exit /b

と書くことが多い。

トップ回答者様は

{メインルーチン}
goto :EOF

:sub1
{サブルーチン}
goto :EOF

sub2
{サブルーチン}
goto :EOF

と回答されている。サブルーチンの下のはgoto は不要だし慣れない。
855: 2018/10/05(金)19:02 ID:Iu01kfl1(6/6) AAS
戻り値なけりゃどっちでもいい様な気がするが
逆に exit を避けてる人もいるよ
856: 2018/10/05(金)19:53 ID:LaGwhHU8(1) AAS
俺もgoto派だな
857: 2018/10/05(金)21:35 ID:RB/KKRkK(1) AAS
gotoは見通しが悪くなるから、極力使わないようにしてる
他の主流の言語だと使えないものが多いから、必然的にそういう書き方に慣れてしまった
858: 2018/10/05(金)23:49 ID:8nMQUHh9(1/2) AAS
goto は使わないに越したことはない。
が、制御構文が貧弱な言語では、熟慮の上で使わざるを得ない場面で使う。
が正解。

詳しくはWikipediaで。
859: 2018/10/05(金)23:56 ID:qkvvR9Zs(1) AAS
Cでもgotoは使うよね
860
(1): 2018/10/05(金)23:58 ID:8nMQUHh9(2/2) AAS
C言語にはMISRAとかいう規約があるが無視していい。
あれは組み込み分野だけの特殊なものだと思っていい。

大抵の人間は、「これは思考からはぶいていい」という書き方の方が読みやすい。
だから、「これは戻すか終わらせる」と書いていっていい。
そうすれば、残ったものに集中できるだろ?

まぁ、日ごろ「自分が辞めた後にこれを読まされる人間が困らないかどうか」って考えて書いてるかどうかってことだ。
861
(2): 2018/10/06(土)16:39 ID:P4YKYACU(1) AAS
あちこちでreturnするのもスパゲッティなgotoと大差がない気がするんだ
テロ的というか
862: 2018/10/06(土)17:10 ID:GNiE4xH/(1) AAS
字面が違うだけで同じだろ
863: 2018/10/06(土)20:28 ID:gea8Zy97(1) AAS
gotoもイディオムに従って使えば混乱しない
バッチファイルだとforの方が理解不能で害悪
864: 2018/10/06(土)23:02 ID:tgEP6apu(1) AAS
gotoがゴーゴーに見えた
865: 2018/10/06(土)23:12 ID:uJ87E9Rb(1) AAS
>>860-861
IPAの出してるMISRAの解説書のreturnは1か所にしろというルール、
あれはクソofクソのルールだと思うね。early returnこそ正義

Cとbatの書き方は全然比較にならないけど
866: 2018/10/07(日)00:27 ID:pbh8RIqN(1) AAS
>>861
むしろ goto の良い使い方と言われている制限が、return をまねたもの。
867
(1): 2018/10/07(日)11:03 ID:Bzp9uIq0(1/4) AAS
バッチファイルかパワーシェルでIPv4のIPアドレスのみを取得して環境変数に代入するにはどういうコマンドになりますか?
教えてください
868: 2018/10/07(日)12:00 ID:6qmhFN/2(1) AAS
「powershell ip address」で検索!
869: 2018/10/07(日)12:28 ID:VwaVbKnV(1) AAS
>>867
環境変数IPAddressに192を含んだIPアドレスを代入するサンプル(PowerShell 2.0併用)

set CMD=powershell -command "& {ipconfig |? {$_ -match 'IP.*: 192\.'}|% {$_ -replace '.*: (\d+\.\d+\.\d+\.\d+)','$1'}}"
for /f "usebackq delims=" %%a in (`%CMD%`) do set IPAddress=%%a
echo %IPAddress%

PowerShell部分はipconfigの結果から正規表現でIPと: 192という文字を含む行を抽出
抽出した行のIPアドレス部分のみ正規表現の置換で抽出といった感じ
PowerShell3.0以降だともうちょっと素直に書ける感じだけど
870
(1): 2018/10/07(日)12:53 ID:Dedwpgqn(1/5) AAS
アダプタが1つだけならこんなでいいんじゃね?

setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%a in ('ipconfig ^|find "IPv4"') do set IPADRESS=%%a
set IPADRESS=%IPADRESS:~1%
echo %IPADRESS%
871: 2018/10/07(日)12:54 ID:Bzp9uIq0(2/4) AAS
この処理作るのにバッチとパワーシェル組み合わせないとできないんですか?
ip取得するだけでも結構大変なのですね
872: 2018/10/07(日)12:56 ID:Bzp9uIq0(3/4) AAS
と思ったらバッチだけでもできそうなんですね、アダプターは一つです
ちょっと色々教えてもらったのでテストしてみます!
873: 870 2018/10/07(日)13:03 ID:Dedwpgqn(2/5) AAS
遅延変数展開の呪文要らなかったわ、1行目削っていいよ
874: 2018/10/07(日)13:07 ID:Bzp9uIq0(4/4) AAS
遅延環境数ってforとifの()で使用するときだけ必要なんでしたっけ?
875: 2018/10/07(日)13:23 ID:Dedwpgqn(3/5) AAS
だいたいその理解でおk
forやifの()内のスクリプトブロックが複数処理で変数代入とその参照のペアがある場合に使う
1処理だけとか、代入だけとかなら不要
876: 2018/10/07(日)17:41 ID:0jrGYEp4(1/4) AAS
無限ループの原因は何か
SET A=1073741824
FOR /L %%B IN (-%A%,%A%,%A%) DO ECHO %%B
877: 2018/10/07(日)19:04 ID:Dedwpgqn(4/5) AAS
set /a A=1073741824
1073741824
set /a B=A+A
-2147483648
となるからね、32bitINTの範囲が-2147483648〜-2147483647
2進表記の最上位bitが1が立ってしまったらマイナス値
878: 2018/10/07(日)19:25 ID:Dedwpgqn(5/5) AAS
試してみるとfor /l 文ではステップ値が1073741824以上の場合必ずバグったループになるね、まあ仕方ないのかも
879: 2018/10/07(日)19:43 ID:0jrGYEp4(2/4) AAS
内部的にどんな計算してるか気になるところです
B は -1073741824,0,1073741824 なので
普通に考えると32ビットのオーバーフローはしてない筈
880: 2018/10/07(日)19:55 ID:0jrGYEp4(3/4) AAS
ああ、分かった
4ループめでオーバーフローするのか
3ループめで最終値に等しいと抜けるんじゃ無いわけか
881: 2018/10/07(日)19:57 ID:2JwzOMBB(1) AAS
バッチファイルのif文でパワーシェルのif -Orみたいな処理できますか?
1-
あと 121 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.016s