2

私はこれを持っています:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set bla="-666"
set zzz="333"
if !zzz! LSS !bla! echo lesser
pause

間違っている「より少ない」を私に与えます。これはASCII値によるものだと思います。しかし、それらを数字であるかのように比較する方法は何ですか?

編集:

さらにいくつかのコード:

set mn=99999
for /f "tokens=1-9" %%a in (%%g) do (
set zzz=%%d
)
if "!zzz!" LSS "!mn!" set mn=!zzz!

以下の答えのどれも私にこれまでのところ正しい結果を与えませんでした...

4

3 に答える 3

2

これは私のために働く

@echo off
set bla=-666
set zzz=333
if %zzz% LSS %bla% echo lesser
pause >nul

見積もりや拡張の遅延は必要ありません。

于 2012-11-22T16:08:54.877 に答える
0

変数を設定するときにブラッククォートを誤って使用しています。VAR="CONTENT"は特殊なケースのみを対象としていますが、これは対象外です。

@echo off
set /A "bla=-666"
set /A "zzz=333"
if %zzz% LSS %bla% echo lesser
pause

変数を囲むためにブラッククォートを使用したことに注意してください。コンテンツにはブラッククォートがありません。

また、次のように、数値を比較するときに比較に黒引用符を使用しないことも忘れないでください。

if "%zzz%" LSS "%bla%" echo lesser
于 2012-11-22T00:03:26.967 に答える
0

これは私にとってはうまくいき、引用符を削除してから比較します。

@echo off
setlocal ENABLEDELAYEDEXPANSION
set bla="-666"
set zzz="333"
for %%a in (!bla!) do set /a bla=%%~a+0
for %%a in (!zzz!) do set /a zzz=%%~a+0
echo !bla! !zzz!
if !bla! LSS !zzz! (
    echo lesser
) else (
    echo greater
)   
pause
于 2012-11-24T16:05:58.530 に答える