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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
842: 2018/09/20(木)06:54 ID:SZObeV+C(1) AAS
謎仕様だなあ...
843: 2018/09/21(金)03:25 ID:q2E2aQh+(1) AAS
また謎です
shiftすると%1は変わるが、%*は変わらない
844
(1): 2018/10/03(水)12:55 ID:kms9X1pz(1) AAS
表示は出来るが、代入が一部だけ出来ない整数値があったよ

@echo off
setlocal enabledelayedexpansion
set /a "a=1<<31"
set /a b=a
set /a c=%a%
set /a d=!a!
echo a=%a%
echo b=%b%
echo c=%c%
省7
845: 2018/10/05(金)06:58 ID:Iu01kfl1(1/6) AAS
setlocal enabledelayedexpansion
set /a "a=1,b_!a!=2"
set b_

で、

b_0=2

何か変だが、こういう仕様なのか?
846
(1): 2018/10/05(金)08:53 ID:vSWfZutq(1/4) AAS
,で分けてあってもsetコマンドは1つだけなので複数コマンドとは思われてないってことなんだろうね

setlocal enabledelayedexpansion
set /a a=1 & set b_!a!=2
set b_!a!

なら大丈夫
847: 2018/10/05(金)17:03 ID:Iu01kfl1(2/6) AAS
>>846 ありがとうございます
!a! は set /a 実行直前の値でした

setlocal enabledelayedexpansion
set /a a=0
for /L %%i in (1,1,3) do set /a "a=%%i,b=a,c=!a!,d=%a%" & echo !a! !b! !c! !d!

1 1 0 0
2 2 1 0
3 3 2 0
848: 2018/10/05(金)17:27 ID:vSWfZutq(2/4) AAS
setlocal enabledelayedexpansion
set /a a=0
for /L %%i in (1,1,3) do ( set /a a=%%i &set /a b=a &set /a c=!a! &set /a d=%a% &echo !a! !b! !c! !d! )
なら

1 1 1 0
2 2 2 0
3 3 3 0

となる。
bへの値代入が!抜きのaでできるって知らなかったわ…
謎挙動。
849: 2018/10/05(金)18:09 ID:Iu01kfl1(3/6) AAS
set /a で %a% や !a! はあまり使用しない方が良さそうだ
% や ! は演算子に含まれる文字で紛らわしいし
展開のタイミングで予想外の挙動するし
展開時に >>844 のように特異値でエラーになったりするし

値参照は変数名だけでいい
850
(1): 2018/10/05(金)18:17 ID:vSWfZutq(3/4) AAS
ご自由に。それより某グラマー御用達QAサイトのトップ回答者様が書くバッチがgoto :EOF 多用で頭痛い
851: 2018/10/05(金)18:26 ID:Iu01kfl1(4/6) AAS
俺もよく使うよ、goto :eof
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

と書くことが多い。
省10
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取得するだけでも結構大変なのですね
1-
あと 131 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.018s