我试图写一个.bat脚本,它在* .sys文件中打印所有变量名。问题是有些行看起来像这样:
CONST String strInstructions{22} := [
"---------------------MESSAGE---------------------",
"Yaddayadda",
" ",
"--------------------------------------------------",
" Yaddayadda",
" ",
" Yaddayadda",
" Yaddayadda",
" ",
" Yaddayadda",
" ",
"---------------------MESSAGE-----------------------",
" Yaddayadda",
" ",
"--------------------------------------------------",
" Yaddayadda",
" ",
" Yaddayadda",
" Yaddayadda",
" ",
" Yaddayadda",
" "];
当我没有消息行时,以下脚本正常工作("!"用于评论):
@echo off
for /F "eol=! tokens=3 delims=:{ " %%A in (SType_txt.sys) do (
echo %%A
)
但是我的生活无法弄清楚如何跳过以"
字符开头的行。当我使用"eol=!"" tokens=3 delims=:{ "
时,它似乎跳过只包含字符"
的行,当我只想检查第一个非空格字符时。所以我想我的问题基本上是:"我如何只使用第一个非空格字符作为eol?"
答案 0 :(得分:0)
可以将"
指定为您的EOL字符,并保留所有其他选项,包括分隔符列表中的<space>
。
for /f ^"eol^=" tokens=3 delims=:{ " %%A in (SType_txt.sys) do echo %%A
但是无法为EOL指定两个字符 - 您可以使用"
或!
,但不能同时使用两者。
我能看到的最好的方法是使用FINDSTR来过滤掉额外的不需要的线路。
for /F "eol=! tokens=3 delims=:{ " %%A in ('findstr /rvc:"^[:{ ]*\"^" SType_txt.sys') do echo %%A