我想检索包含几行文本的文件(install.cfg)的第二行。 我尝试使用下面的代码在本地计算机上运行良好,但是在Windows计算机上执行时,它抛出的“þ@”未被识别为内部或外部命令,可操作程序或批处理文件
for /f "tokens=1*delims=:" %%G in ('findstr /n "^" install.cfg') do if ( %%G equ 2 SET VERSION=%%H )
答案 0 :(得分:0)
我建议使用ASCII / ANSI / OEM(每个字符一个字节)而不是不 Unicode(UTF-8或UTF-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 encoding或code page分别写入相同的批处理文件批处理文件,其中包含代码值大于U + 007F的字符(非ASCII字符)。
FOR 希望文件install.cfg
被编码为每个字符一个字节。只要版本字符串仅由ASCII字符组成,install.cfg
也可以不使用byte order mark或使用进行UTF-8编码。在默认的命令行环境中(双击批处理文件加载),无法使用命令 FOR 使用此代码直接处理UTF-16编码的install.cfg
。
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
echo /?
for /?
goto /?
set /?