[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
682(1): 2018/07/29(日)20:36 ID:2kcGqgTd(1) AAS
doの後のカッコ使うな
683(1): 2018/07/29(日)23:23 ID:AzlFD5Cm(2/2) AAS
>>681
ありがとうございます
それも試したと思っていたけどそうでなかったようですね
>>682
多くのサンプルではサブルーチンをつかっているようですが
カッコを使うとバグの原因になりやすいとかそんな理由なのでしょうか
684: 2018/07/31(火)00:35 ID:eJ/lX+1f(1) AAS
>>683
%%~dp → %%~df%%~pf
callを使い %1などを使えるようにするため
昔は%~n1 など数字でないと動作無保証だった
685: 2018/07/31(火)04:53 ID:vnodIDx/(1) AAS
Win10のコマンドプロンプト画面では改行と折り返しを区別してコピーできるようになったね。これすごく便利。
他に改善点とかあるのかな?
686: 2018/07/31(火)05:31 ID:R/dSWHzC(1) AAS
コピペでCtrl+C,Ctrl+Vも使える
Alt+Enterで最大化
ウィンドウスナップ
など。詳しくは
外部リンク:japan.zdnet.com
687(6): 2018/08/03(金)10:35 ID:w2m/pEoW(1) AAS
windows板のスレに書いてしまったので詳細はそちらを参照して頂きたいのですが
2chスレ:win
この件について詳細をご存知の方あるいは解説されているサイトをご存知の方は
ご教示頂けないでしょうか?
688: 2018/08/03(金)12:24 ID:r+5aCgkd(1) AAS
再現しない。よくソース見直してみて
おそらく単に遅延変数展開だけの問題に見える。
689: 687 2018/08/04(土)01:49 ID:z4XK4aXP(1/4) AAS
プログラムを問題の箇所だけ抜き出して実行しても同じ結果になります。
xxxを未定義状態にしてから%xxx%を引数にして実行するとやはり
「echo %aaa%|more」の結果がyyyと表示されます
当方の環境はWindows7 SP1です
これはこう動作するように作られた仕様なのかそれともあてにならない不思議動作なのか
cmdのバグなのか判断したいです
690: 2018/08/04(土)03:29 ID:XmDLxyoB(1) AAS
ん?せやで?Windows 7はデフォルトの設定が違うんやで
しらんかったんか?cmd /?とかしてみな。
691: 687 2018/08/04(土)05:41 ID:z4XK4aXP(2/4) AAS
cmd /? にも setlocal /? にも echo /? にも
echoとパイプ併用時の環境変数の二重展開について記述は無いようです
692: 2018/08/04(土)07:14 ID:ZE1/UEds(1) AAS
ありまぁ〜す
693: 687 2018/08/04(土)07:43 ID:z4XK4aXP(3/4) AAS
別のものを見ているのかもしれません。
そちらには何と書いてありますか?
694: 2018/08/04(土)07:51 ID:HzKYXCJW(1/2) AAS
パイプってCall文でサブルーチン処理してるような物だし、call文と同じ展開をすると思っとけばいいんじゃね?
695: 687 2018/08/04(土)09:07 ID:z4XK4aXP(4/4) AAS
なるほど。
では逆にあえて二重展開したい場合はcallを使ったほうが無難でしょうか?
696: 2018/08/04(土)11:22 ID:HzKYXCJW(2/2) AAS
call文で変数内変数が1ネスト展開されるのはパイプよりは有名だと思う
697: 2018/08/04(土)11:35 ID:1BI89n66(1/2) AAS
一番知られて無いのが、for /f文の('コマンド')が同じく二重展開されるってのかな
698: 2018/08/04(土)11:40 ID:1BI89n66(2/2) AAS
いや本当は、コマンドの中で^を付けてエスケープしないといけない場合があることは
結構知られているんだけど、それが二重展開のせいだってことが認識されてないわけで
699: 2018/08/04(土)12:17 ID:hhRJxbHb(1) AAS
>>687
>>448
700: 687 2018/08/05(日)05:37 ID:DoWKU022(1) AAS
理解できました
みなさんありがとうございました
701: 2018/08/06(月)20:49 ID:9+kXWEFM(1) AAS
echo は結構罠
if "%errlorleverl%" ... も罠。
はやくバッチから救われたい…
702: 2018/08/11(土)19:21 ID:vbsvSkjm(1) AAS
何が罠なのかわからん
703(2): 2018/08/11(土)20:56 ID:WNr/dTgn(1) AAS
つづりを覚えられない奴には罠なんだろ w
704(2): 2018/08/11(土)21:47 ID:HlmNsX8I(1) AAS
こういうことじゃないかな?
set ERRORLEVEL=0
hogecommand
if %ERRORLEVEL% gtr 0 goto :ERROR
これが絶対真にならず、ジャンプしないとか
705: 2018/08/12(日)03:12 ID:lJZ67VC6(1/3) AAS
エラーは1以上とはかぎらないんだよな、コマンドによっては。
706(3): 2018/08/12(日)09:09 ID:pT5cyKVs(1/6) AAS
>>703
echo hoge > test.txt
て書くと「hoge」の後の半角空白までがtest.txtに出力されるんだよ。
>>704
代入しなくても、errorlevel を環境変数として判定に使うと正常に動かない場合がある。
具体的には
echo n | comp A.exe B.exe >NUL 2>&1
if not "%ERRORLEVEL%"="0" (
:
このとき、何故か%ERRORLEVEL% は常に「0」。バイナリ不一致でも「0」。
省4
707: 2018/08/12(日)09:13 ID:pT5cyKVs(2/6) AAS
>>706 にちょっと間違い。
〇 if "%ERRORLEVEL%"="0" (
× if not "%ERRORLEVEL%"="0" (
708(1): 2018/08/12(日)09:20 ID:yoDY/qSn(1) AAS
if の比較は = じゃなくて == だろ
709: 2018/08/12(日)09:40 ID:pT5cyKVs(3/6) AAS
>>708
悪い。typo。
〇 if "%ERRORLEVEL%"=="0" (
710(2): 2018/08/12(日)11:52 ID:eNrGPpfD(1) AAS
何故か以前にいろいろ間違いすぎなんだよ
ゼロから書き直せ
711: 2018/08/12(日)14:40 ID:IZr1Emsm(1) AAS
>>710
> ゼロから書き直せ
こんな感じっすかー?
0" ([HOME]if "%ERRORLEVEL%"=="
上下前次1-新書関写板覧索設栞歴
あと 291 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s