[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
523: 2018/05/04(金)23:52 ID:Ry3XO9FI(1) AAS
>>501
Ruby では、
num = 9999_1234567890_1234567890_1234567890_1234567890_1234567890_1234567890
num.to_s(16)
#=> "184e78450dd8c1fca3b502d65e4f6fb73c42c47ccff196ce3f0ad2"
524: 2018/05/05(土)00:20 ID:uOR+hZGm(1) AAS
dcなら
値1
値2
:
値n
16of
525: 2018/05/05(土)04:13 ID:nqyvYHZY(1) AAS
>>520
gcalc面白いね
こんな書き方が通っちゃうんだー
--bat--
@echo off
gcalc -d config(\"tab\",0), base(16), <in.txt; quit;
rem gcalc -d config(\"tab\",0), base2(16), <in.txt; quit;
--in.txt---
1111111111
2222222222
3333333333
526: 2018/05/14(月)16:02 ID:vCNzBA31(1) AAS
%1や環境変数が数字だけか判定するのが面倒
ぐぐってやりかたはわかったが、もっとすっきりくっきりな方法はないですか
正規表現だと ^\d+$ でおわりなのに
set W=x%1
set W=%W:0=%
set W=%W:1=%
set W=%W:2=%
set W=%W:3=%
set W=%W:4=%
set W=%W:5=%
set W=%W:6=%
set W=%W:7=%
set W=%W:8=%
set W=%W:9=%
if '%W%=='x echo 数字
527(2): 2018/05/14(月)16:37 ID:qPzKX5Gg(1) AAS
set X=100
echo %X%|findstr /X "[0-9][0-9]*"&&echo 数字
こうとか
528(2): 2018/05/15(火)01:55 ID:VsPlEm8N(1) AAS
@rem 2147483648 以上の数は扱えないため、大きい値が入る条件には不向き。
set "W=%1"
set DUMMY=a
set /A "DUMMY=W*1"
if not "%W%"=="%DUMMY%" (echo 数字以外) else echo 数字のみ
529: 2018/05/15(火)15:39 ID:Aaz/hbaw(1/2) AAS
>>528
-123 数字のみ
530: 2018/05/15(火)15:47 ID:Aaz/hbaw(2/2) AAS
0001 数字以外
531: 2018/05/16(水)00:05 ID:vNnFvDtx(1) AAS
ありがとうございます
>>527
findstって正規表現のようなことができるのですね、知らなかったです
>>528
英字だけ、数字だけだといいのですが、英数字混在文字列でエラーになりました
*1 の代わりに +0も同じでした
532(1): 2018/05/16(水)03:54 ID:Hrg3NbAG(1/6) AAS
@echo off
call :check_num %1 result
echo %result%
pause
goto :eof
:check_num
if "%~1"=="" set "b=FALSE" & goto :eof
for /f "delims=-+0123456789 tokens=* eol=" %%i in ("%~1") do (
set "a=%%i"
if defined a (set "b=FALSE") else set "b=TRUE"
)
endlocal & set "%2=%b%"
533: 2018/05/16(水)04:03 ID:Hrg3NbAG(2/6) AAS
>>532
7行目の :check_num の次の行に
setlocal
を追加願います
534(1): 2018/05/16(水)04:13 ID:Hrg3NbAG(3/6) AAS
なんか間違ってたので書き直した
@echo off
call :check_num %1 result
echo %result%
pause
goto :eof
:check_num
setlocal
if "%~1"=="" set "b=FALSE" & goto x
for /f "delims=-+0123456789 tokens=* eol=" %%i in ("%~1") do (
set "a=%%i"
if defined a (set "b=FALSE") else set "b=TRUE"
)
:x
endlocal & set "%2=%b%"
535: 2018/05/16(水)16:36 ID:VQztSlVV(1/4) AAS
1"2
result"=="" set "b=FALSE" & goto x の使い方が誤っています。
536: 2018/05/16(水)16:48 ID:VQztSlVV(2/4) AAS
"1"
TRUE
1"2"
ECHO は <OFF> です。
537: 2018/05/16(水)21:51 ID:Hrg3NbAG(4/6) AAS
引数の中の " の対策すると大変なんで、やりたくない
やりたい人、どうぞ
538(1): 2018/05/16(水)22:31 ID:VQztSlVV(3/4) AAS
1^2
1|2
1&2
539: 2018/05/16(水)23:12 ID:Hrg3NbAG(5/6) AAS
引数の中に cmd で特別な意味を持つ文字が有る場合は左に ^ を付けるか
全体を " で囲むしかないよ
540: 2018/05/16(水)23:15 ID:VQztSlVV(4/4) AAS
>>538は>>527宛て
>>534的には、1^^2
541: 2018/05/16(水)23:50 ID:Hrg3NbAG(6/6) AAS
FALSE になるようだが何か問題があるの?
542: 2018/05/17(木)00:05 ID:TsNh8oQN(1/9) AAS
ああ分かった リテラルが 1^2 の場合ね 失礼
543: 2018/05/17(木)00:31 ID:TsNh8oQN(2/9) AAS
call :check_num "%~1" result
にでもすりゃいいのかな
こういうのは考え出すときりが無い様な気がするが
544: 2018/05/17(木)01:18 ID:zVFG07SK(1/5) AAS
分かってるのかどうか知らないが、
1"2"が、ECHO は <OFF> です。になるのは、eol="が効いてるため
545(1): 2018/05/17(木)06:56 ID:TsNh8oQN(3/9) AAS
eof= を消すと副作用があるし
どっちにしろ引数に ; があると誤動作するみたいだし
こりゃあもうお手上げだな
546: 2018/05/17(木)07:02 ID:TsNh8oQN(4/9) AAS
あ、eol= だった
547(1): 2018/05/17(木)07:11 ID:pqvSuRzJ(1) AAS
質問者が「もっとすっきりくっきりな方法」と言ってるんだから複雑でトリッキーな方法は求められてなないだろう
548: 2018/05/17(木)08:50 ID:zVFG07SK(2/5) AAS
>>545
>>269-273
549: 2018/05/17(木)09:36 ID:cmWUEZX7(1) AAS
>>547
いつもそうなるけど、バッチじゃ諦めろ、が正解になってしまうよw
550(2): 2018/05/17(木)10:17 ID:TsNh8oQN(5/9) AAS
どんな方法でも良いから
引数の中に " とか ; が入ってても
正しく動作するのを頼む
というのは絶対に無理なのかね
551: 2018/05/17(木)11:47 ID:TsNh8oQN(6/9) AAS
>>550が不可ならそれを前提条件にするしかないだろ
ちょっと直してみた
@echo off
call :check_num "%~1" result
echo %result% & pause & goto :eof
:check_num
setlocal
set "b=FALSE" & if "%~1"=="" goto x
for /f "delims=-+0123456789 tokens=*" %%i in ("%~1") do (
set "a=%%i" & if not defined a set "b=TRUE"
)
:x
endlocal & set "%2=%b%"
552(1): 2018/05/17(木)17:15 ID:TsNh8oQN(7/9) AAS
とりあえず引数の " と ; の対策らしきもの
引数は行末まで1個のみ
もう嫌気がさしたのでこれ以上はやめとく
@echo off
set a=%*"
set /a b=0,c=0
setlocal enabledelayedexpansion
:x
set d="!a:~%b%,1!!a:~%b%,1!"
if !d!=="" goto y
if !d!=="""" set /a c+=1
if !d!==";;" set /a c+=1
set /a b+=1 & goto x
:y
endlocal & set c=%c%
set "e=FALSE" & if %c% gtr 1 (goto z) else set "a=%*"
for /f "delims=-+0123456789 tokens=*" %%i in ("%a%") do (
set "a=%%i" & if not defined a set "e=TRUE"
)
:z
echo %e%
上下前次1-新書関写板覧索設栞歴
あと 450 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.025s