如何使用批处理从文件中提取每行的第一个字母?

0 batch-file

到目前为止这是我的代码:

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

first_char.exe 从输入文件中向stdout输出第一个char.

它打印:

ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
Run Code Online (Sandbox Code Playgroud)

(因为我有6行文字temp.file).

jeb*_*jeb 6

我不明白为什么你需要一个first_charexe文件来提取一个char,一个简单的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!
)
Run Code Online (Sandbox Code Playgroud)