Batch file 批查找条件

Batch file 批查找条件,batch-file,conditional-statements,findstr,Batch File,Conditional Statements,Findstr,我已经搜索了很多答案,但似乎找不到我要找的,所以如果已经有答案,请原谅。我也从来没有在这里发布过,所以如果我的格式错误,请原谅 我正在尝试确定服务器的操作系统(2003或2008),并根据结果运行命令。蝙蝠总是直飞“最后”。这是我所拥有的- @echo off cd\ set output="c:\osout.txt" del %output% set /p osinfo=Server? wmic /node:%osinfo% os get caption > "c:\osout.tx

我已经搜索了很多答案,但似乎找不到我要找的,所以如果已经有答案,请原谅。我也从来没有在这里发布过,所以如果我的格式错误,请原谅

我正在尝试确定服务器的操作系统(2003或2008),并根据结果运行命令。蝙蝠总是直飞“最后”。这是我所拥有的-

@echo off
cd\
set output="c:\osout.txt"
del %output%
set /p osinfo=Server? 

wmic /node:%osinfo% os get caption > "c:\osout.txt"


findstr "2003" "c:\osout.txt"
IF %ERRORLEVEL% EQU 0 GOTO ver2003
IF %ERRORLEVEL% EQU 1 GOTO next
:next
findstr "2008" "c:\osout.txt"
IF %ERRORLEVEL% EQU 0 GOTO ver2008
IF %ERRORLEVEL% EQU 1 GOTO last
:ver2003
cd\
cls
echo ver2003 
pause

:ver2008
cd\
cls
echo ver2008
pause

:last
cd\
cls
echo not 2003 or 2008
pause

我想这就是你需要的: 在“选项”参数上加上特殊标记

选项可以是以下开关的任意组合:

/我不区分大小写搜索

/S搜索子文件夹

/p跳过任何包含不可打印字符的文件

/OFF[LINE]不跳过设置了OffLine属性的文件

/L按字面意思使用搜索字符串

/B如果在一行的开头,则匹配模式

/E如果在一行的末尾,则匹配模式

/X个完全匹配的打印行

/V仅打印不包含匹配项的行

/N在匹配的每行之前打印行号

/如果文件包含匹配项,则仅打印文件名

/O在每个匹配行之前打印字符偏移量


希望有帮助

wmic
以Unicode格式创建输出文件,
findstr
不支持该格式。改为使用
find

通过在记事本中打开文本文件并单击“文件”,可以检查文本文件的编码→ 另存为…。字段编码(另存为对话框的底部中间)显示文件的实际编码。

尝试以下操作:

type "c:\osout.txt" | findstr /c:"2003" 

我想我已经尝试了所有可能的相关选项组合,但都没有效果。我还尝试添加通配符。您是否有任何我应该尝试的特定选项组合?我发现,findstr不支持unicode,WMIC输出到unicode,因此这种方法不起作用。Gah。坏消息。你知道有没有其他方法可以像WMIC一样快速返回操作系统信息?“systeminfo”需要永远运行,因为它查询的信息比我需要的多得多。正如我所说,您可以使用
find
(支持Unicode)而不是
findstr
。或者按照Endro的建议,将文件键入
findstr
<代码>类型可以读取Unicode文件并以ASCII格式打印输出。