こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MS-DOS: for文で「01」が「1」になってしまいます

よろしくお願いします。
Windows 2000 Server についての質問です。

for文を使いバッチを組んでいます。
形式は下記です。
FOR /L %変数 IN (開始,ステップ,終了) DO コマンド [コマンドパラメータ]

1.例えば、次のようにバッチファイル(test.bat)に記述します。
 for /L %%F IN (%1,1,%2) DO echo %%F

2.そして、次のようにコマンドプロンプトで実行します。
 test.bat 01 06

3.エコーとして返るのは、1,2,3,4,5,6 という1桁の数値であり、
  01,02,03,04,05,06 という2桁の数値ではありません。
  後者のように2桁で返したいのですが、どのようにすれば良いでしょうか。

投稿日時 - 2006-09-20 01:55:18

QNo.2418711

すぐに回答ほしいです

質問者が選んだベストアンサー

単に、01~31を二桁で表示したいだけなら
for /L %%F IN (%1,1,%2) DO if %%F LEQ 9 (echo 0%%F) else (echo %%%F)
とif文で場合分けすれば可能です。

しかし、for文の中で数字を使って何か処理をさせたいなら、一桁のままにして(計算などの処理に使って)

setlocal ENABLEDELAYEDEXPANSION
for /L %%F IN (%1,1,%2) DO (
set /a など何かの処理

set DT=0%%F
set DT=!DT:~-2!
echo !DT!
)
などと、遅延環境変数の展開を使った方がいいかもしれません。
遅延環境変数の展開については、set /? のヘルプに記載があります。

投稿日時 - 2006-09-20 06:41:04

お礼

ご回答ありがとうございます。
うまく実行できました。

投稿日時 - 2006-09-21 23:46:02

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

#1>先頭に0をつけてしまうと途中で3桁になってしまうのです。
#2様の回答にあるように
set DT=%DT:~-2%
のようにして後から2桁取り出すことができます。

投稿日時 - 2006-09-20 18:28:45

お礼

アドバイスありがとうございます。
他の質問にも回答してくださっていて、非常に感謝しています。

投稿日時 - 2006-09-21 23:47:02

ANo.1

さしあたり
echo 0%%F
のようにすればいいかと思います。
一般的には、バッチで数値の書式化ってできないような気がしますので、そういうことが必要ならVBScript を使われるといいかと思います。

投稿日時 - 2006-09-20 03:20:20

お礼

アドバイスありがとうございます。

>echo 0%%F
→01から31までを2桁で返していきたいので、
 先頭に0をつけてしまうと途中で3桁になってしまうのです。

投稿日時 - 2006-09-20 05:32:17

あなたにオススメの質問