1

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

我正在尝试确定服务器的操作系统(2003 年或 2008 年),并根据结果运行命令。.bat 总是直接指向 ":last"。这就是我所拥有的 -

@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
4

3 回答 3

1

尝试这个:

type "c:\osout.txt" | findstr /c:"2003" 
于 2013-08-13T22:18:21.490 回答
0

wmic以 Unicode 格式创建输出文件,findstr. 改为使用find

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

于 2013-08-13T22:03:27.407 回答
-1

我认为这是您需要的:http : //ss64.com/nt/findstr.html 特别注意“选项”参数。

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

/I 不区分大小写的搜索。

/S 搜索子文件夹。

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

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

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

/B 如果在行首,则匹配模式。

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

/X 打印完全匹配的行。

/V 只打印不包含匹配的行。

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

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

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

希望能帮助到你!

于 2013-08-13T21:57:06.763 回答