2

回避策を探しているコードの一部を投稿する

if 09 LSS 9 (ECHO YES) ELSE (ECHO NO)

このコマンドは、09 が 9 未満であると見なされるため、常に「はい」をエコーし​​ます。このコマンドの代替手段はありますか?

編集:

ありがとうございますが、挿入しようとしているコマンドで Modulo 部分が機能していません。

以下の「1234 09」を含むファイルtest.txtを用意するのが私のコマンドです

set actualdate=9
for /f "usebackq Tokens=1,2,3" %%d in (test.txt) do (SET /a x=1000%%e %% 1000 & if %x% LSS %ActualDate% ECHO %%d >> test2.txt)
4

2 に答える 2

3

コード スニペットの問題は、構文とパーセント展開です。複数のコマンドを 1 行 (パイプではなく) で
使用するか、複数の行に分割することができます。ブロック内のパーセント展開で 変数にアクセスすることはできませんが、遅延展開はそこで機能します&|
x

setlocal EnableDelayedExpansion
set actualdate=9
for /f "usebackq Tokens=1,2,3" %%d in (test.txt) do (
   SET /a x=1000%%e %% 1000
   if !x! LSS %ActualDate% ECHO %%d >> test2.txt
)
于 2012-07-10T20:24:21.003 に答える
2

数値を変数に入れることができる場合は、モジュロを使用して先頭のゼロを取り除くことができます。

このサンプルを試してください:

@ECHO OFF

SET a=09
SET b=9

SET /a x=1000%a% %% 1000
ECHO %x%
SET /a y=1000%b% %% 1000
ECHO %y%

if %x% LSS %y% (ECHO YES) ELSE (ECHO NO)

PAUSE

SET /aa=09 を実行しようとすると、次のエラーが発生します。

無効な番号。数値定数は、10 進数 (17)、16 進数 (0x11)、または 8 進数 (021) のいずれかです。

于 2012-07-10T19:34:47.910 に答える