Пакетное состояние

Я искал довольно много ответов, и, кажется, не могу найти то, что я ищу, так что извините, если на него уже ответили. Я также никогда не писал здесь, так что извините, если мое форматирование неверно.

Я пытаюсь определить ОС сервера, 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

3 ответа

Попробуй это:

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

wmic создает выходной файл в формате Unicode, который не поддерживается findstr, использование find вместо.

Вы можете проверить кодировку текстового файла, открыв файл в Блокноте и нажав Файл → Сохранить как…. Поле " Кодировка" (внизу по центру диалога " Сохранить как ") показывает фактическую кодировку файла.

Я думаю, что это то, что вам нужно: http://ss64.com/nt/findstr.html Особое внимание уделите параметру "Опции".

Опции могут быть любой комбинацией следующих ключей:

/ I Поиск без учета регистра.

/ S Поиск подпапок.

/ P Пропустить любой файл, содержащий непечатаемые символы.

/ OFF [LINE] Не пропускать файлы с установленным атрибутом OffLine.

/ L Использовать строку (и) поиска буквально.

/ B Сопоставить шаблон, если в начале строки.

/ E Совпадение шаблона, если в конце строки.

/ X Вывести строки, которые точно совпадают.

/ V Печатать только строки, которые НЕ содержат совпадения.

/ N Печатать номер строки перед каждой соответствующей строкой.

/ M Печатать только имя файла, если файл содержит совпадение.

/ O Печатать смещение символа перед каждой соответствующей строкой.

Надеюсь, поможет!

Другие вопросы по тегам