4

一部のファイルを処理するために、ネストされた for ループを作成したいと考えています。私は解決策を広範囲に探し、多くの同様のバージョンを見つけましたが、これが初めてなので、メソッドを組み合わせてやりたいことを行うのに問題があります。

基本的には、001 から 500 までのパディングされた数値の範囲を循環する FOR /L ループが必要です。

範囲 (1,1,500) を指定できることはわかっていますが、明らかに (001,001,500) として指定することはできません。00 を追加し、その後 %%a が >9 のときに 0 だけを追加するにはどうすればよいですか? これは刺し傷だと思いますが、おそらく別の方法がありますか?

私が望んでいた私のコード(明らかに間違っています):

@echo off
for %%a in (001,001,500) do (
echo %%a
for %%s in (control scenario) do (
echo %%s
svic_ensemble.exe 28009_Trent_at_Colwick.cal Trent_%%s_%%a.txt 28009_Trent_at_Colwick.txt     Trent_%%s_%%a.out
)
)
pause

どうもありがとう

エド

4

2 に答える 2

12

文字列操作で解決できます。
最初に数字の前に 2 つのゼロを付けてから、最後の 3 文字だけを取ります。

setlocal EnableDelayedExpansion
for /L %%n in (1 1 500) do (
  set "num=00%%n"
  set "num=!num:~-3!"
  echo !num!
)
于 2012-07-02T11:28:16.140 に答える
5

ゼロ パディングを取得する最も簡単な方法は、多数のゼロをパディングしてから部分文字列を使用することです。

set Number=1
set PaddedNumber=000000%Number%
set PaddedNumber=%PaddedNumber:~-3%

遅延展開が必要になりますが、これをループで使用するために適応させることができます。

setlocal enabledelayedexpansion
for /l %%a in (1, 1, 500) do (
  set num=000%%a
  set num=!num:~-3!
  for %%s in (control scenario) do (
    svic_ensemble.exe 28009_Trent_at_Colwick.cal Trent_%%s_!num!.txt 28009_Trent_at_Colwick.txt     Trent_%%s_!num!.out
  )
)
于 2012-07-02T11:27:49.883 に答える