我们如何使用批处理脚本读取文件的第二行?

时间:2018-12-04 13:19:27

标签: batch-file

我想检索包含几行文本的文件(install.cfg)的第二行。 我尝试使用下面的代码在本地计算机上运行良好,但是在Windows计算机上执行时,它抛出的“þ@”未被识别为内部或外部命令,可操作程序或批处理文件

for /f "tokens=1*delims=:" %%G in ('findstr /n "^" install.cfg') do if ( %%G equ 2 SET VERSION=%%H )

1 个答案:

答案 0 :(得分:0)

我建议使用ASCII / ANSI / OEM(每个字符一个字节)而不是 UnicodeUTF-8UTF-16,每个字节多个字节字符)编码的批处理文件:

for /F "usebackq skip=1 delims=" %%G in ("install.cfg") do set "VERSION=%%G" & goto HaveValue
:HaveValue
echo Version read from file: %VERSION%

Windows命令处理器在命令行环境中默认使用的字符编码是在CMD窗口中运行命令chcp ch ange c ode p age),不带任何参数,并且取决于为使用的用户帐户设置的地区/国家/地区。在通常运行批处理文件的环境中,建议(通常但并非总是)使用Windows命令处理器默认使用的character encodingcode page分别写入相同的批处理文件批处理文件,其中包含代码值大于U + 007F的字符(非ASCII字符)。

FOR 希望文件install.cfg被编码为每个字符一个字节。只要版本字符串仅由ASCII字符组成,install.cfg也可以不使用byte order mark或使用the progress Bar进行UTF-8编码。在默认的命令行环境中(双击批处理文件加载),无法使用命令 FOR 使用此代码直接处理UTF-16编码的install.cfg

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • echo /?
  • for /?
  • goto /?
  • set /?