0

私の%%x

a=23
b=56
c=89

.txt呼ばれるhi.txt

for %%x in (hi.txt) do (echo %%x:~0,1 %%x)

しかし、それは失敗しました....

ありがとうございました

各行の「最初の文字」をエコーし​​たいのですが、%%x:~0,1 を使用できません...

4

2 に答える 2

1

あなたが何をしようとしているのか正確にはわかりません...ファイルhi.txtを解析し、変数(a、b、c)とそれらが等しい数を引き出したいと仮定しています..

@エコーオフ
setlocal ENABLEEXTENSIONS

for /f "tokens=1,2 delims==" %%i in (hi.txt) do (
   エコー %%i の値は %%j
)

これは出力されます

a の値は 23 です
 b の値は 56
 c の値は 89

さらに詳しい情報が必要な場合は、「ヘルプ」を参照してください。

また、私の例では = 記号を解析しているため、各変数の幅は関係ありません。"MyText=100" のような行を使用することもできますが、それも機能します。~0,1 は、各値の幅が 1 文字のみであると想定しています。

これが役立つことを願っています。

于 2012-08-16T18:10:12.617 に答える
0

行の最初の文字を出力するだけでよい場合は、次のスクリプトが機能するはずです。元の問題は遅延変数展開にあった可能性があると思います。詳細については、「help setlocal」および「help set」を参照してください。

このバージョンのスクリプトは、各行を一時変数に読み取り、最初の文字を firstCharacter という名前の別の変数に切り出します。!CMD スクリプトの遅延変数展開機能に使用されます。

    @エコーオフ
    setlocal ENABLEEXTENSIONS、ENABLEDELAYEDEXPANSION

    for /f %%i in (hi.txt) do (
       ライン全体を設定=%%i
       set firstCharacter=!wholeLine:~0,1!
       echo 最初の文字は !firstCharacter!
    )

    エンドローカル

出力は...

最初のキャラクターは
 最初の文字は b
 最初の文字は c

これに %%i を直接使用する方法を見つけることができなかったため、一時変数 wholeLine. 明確にするために変数 firstCharacter を追加しましたが、これが機能するために存在する必要はありません。!wholeLine:~0,1! とエコーすることもできました。直接。

楽しむ。

于 2012-08-17T15:46:37.810 に答える