0

これはこれまでの私のコードです:

FOR /f %%G IN (temp.file) DO (
    echo %%G > temp
    first_char.exe temp > letter
    set /p myLetter =<letter
    echo %myLetter%
)

first_char.exe入力ファイルの最初の文字をstdoutに出力します。

それは印刷します:

ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.

(6行のテキストがあるためtemp.file)。

4

1 に答える 1

7

first_char単一の文字を抽出するためにexeファイルが必要な理由がわかりません。単純なvar:~0,1ものでも機能するはずです。

あなたECHO is off.の問題はの拡張時間の問題です%myLetter%
完全な括弧ブロックが解析されるときに展開されます。この時点myLetter%では空であるため、空の行のみが取得されます。

setlocal EnableDelayedExpansion
FOR /f %%G IN (temp.file) DO (
    set "var=%%G"
    set "myLetter=!var:~0,1!"
    echo !myLetter!
)
于 2012-05-17T17:45:12.970 に答える