1

0002C1ファイルで0002C2、、、、0003C1を含む最初の列を読んでいます 0004C1

最初の 4 桁のみを抽出して変数に入れます。

FOR /F "tokens=1" %i IN (export.txt) DO (

  echo %i

  set s=%i:~0,4%

  echo %s%

)

出力では、echo %i の結果は正しいです。数字の抽出も正常に機能しているようです(1つのエントリで試してみると、結果は正しいです)が、の値はs変わらないようです! 誰かが問題が何であるかを見ることができますか?

これが私が受け取る出力です:

0002C1
%s%
0002C2
%s%
0003C1
%s%
0004C1
%s%
4

2 に答える 2

0

最初に:SETLOCALENABLEDELAYEDEXPANSIONコマンドを使用して変数を展開する必要があります...

2番目:特別な変数(%i:〜0.1%)を「カット」しようとしていますが、できません。

私の解決策:

@Echo OFF

:: By Elektro H@cker

FOR /F %%# IN (export.txt) DO (
  Call Set "Token=%%#"
  Call Set "Token=%%Token:~0,4%%"
  Call Echo %%Token%%
)

Pause&Exit
于 2012-11-28T20:30:47.017 に答える
0

スクリプトにはいくつかの問題がありますが、必要な調整はわずかで、うまく機能します。

forループで作成した変数にアクセスするには、遅延展開を使用する必要があります。

setlocal enabledelayedexpansion
FOR /F "tokens=1" %%i IN (export.txt) DO (
  echo %%i
  set x=%%i
  set s=!x:~0,4!
  echo !s!
)

唯一の違いは、 を に置き換えて、%代わり!に遅延展開を使用して変数を読み取るように cmd に指示することです。

%バッチ ファイルを使用している場合は、for変数にdouble を使用する必要があります。

また、何かに割り当てる必要が%%iあるため、変数記号をその両側で使用できます。この場合は を使用しxました。

于 2012-11-29T08:54:38.220 に答える