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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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みたいな処理できますか?
882: 2018/10/07(日)20:18 ID:0jrGYEp4(4/4) AAS
IFの条件は2個の値を比較するだけ
複雑なOR,AND,XORとかあるんなら計算して結果を変数に入れる
それをIFの条件で使う
883: 2018/10/08(月)21:58 ID:To7x1PVP(1) AAS
あると便利なミニミニバッチ

DOS窓に今の時間を表示しておく
m.bat
@echo off
setlocal
set x=%date:~5% %time:~0,5% %*
title=%x%
exit /B 0

画面クリア
c.bat
@echo off
cls
exit /B 0

クリップボードクリア
cc.bat
@echo off
echo.|clip
echo clip clear
exit /B 0
884
(2): 2018/10/09(火)08:38 ID:IIAdkwpd(1) AAS
画面クリアは普通にcls打つのと何が違うん?
885: 2018/10/09(火)11:35 ID:9WevvN1n(1) AAS
時刻表示ならプロンプト変えたら?
clsは>>884
クリップボード履歴管理系のアプリ使ってる人には無用?
886: 2018/10/09(火)15:53 ID:hXgFZ2lj(1) AAS
>>884
一文字でいいので、お菓子を食べながらでもできる、大差
887: 2018/10/10(水)17:37 ID:Wl83IH5q(1) AAS
そういうしょぼいものならdoskeyでも使っとけ
888: 2018/10/11(木)22:01 ID:aIIKUaH8(1) AAS
1文字とか何かで誤爆しそうで危うすぎる
889: 2018/10/12(金)00:17 ID:xVyRtSc0(1) AAS
くだらねー
890
(1): 2018/10/13(土)05:37 ID:YmkYzRio(1) AAS
copyコマンドがおかしい
copy x+y z
とするとzに改行追加されている

copy /B x+y z
だと問題なしだが??
891
(1): 2018/10/13(土)07:34 ID:TS7U3WRI(1) AAS
>>890これね
外部リンク:shigechi-64.hatenablog.com
1-
あと 111 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.016s