[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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"
省2
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 (
省5
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"
省3
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
省11
553(1): 2018/05/17(木)17:16 ID:zVFG07SK(3/5) AAS
>>550
@echo off
set "arg1=%1"
call :check_num arg1 result
echo %result% & pause & goto :eof
:check_num
setlocal EnableDelayedExpansion
set "b=FALSE"
for /f "delims=0123456789 tokens=*" %%i in ("!%1!") do (
set "a=%%i" & if not defined a set "b=TRUE"
省7
554(1): 2018/05/17(木)17:18 ID:zVFG07SK(4/5) AAS
なお、+-は除くのが吉
+1+2-3
555(2): 2018/05/17(木)18:05 ID:TsNh8oQN(8/9) AAS
>554.bat 1"&ab"
'ab""' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
TRUE
556: 2018/05/17(木)21:22 ID:zVFG07SK(5/5) AAS
>>555
これ以上はファイル渡しにすべきだろう
set /p
or
for /f delimes^=^ tokens^=*^ eol^=
上下前次1-新書関写板覧索設栞歴
あと 446 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s