Проверить запись в BAT файле
Всем привет.
Новичок в Батниках, поэтому такой вопрос.
Есть файл selhdw.dll
В нем есть строка
SET SST_....
Необходимо с помощью батника проверить наличие записи которое идет после SET SST...
Если например
SET SST_BRM то запускать файл 1
если
SET SST_CDM то запускать файл 2
Подскажите пожалуйста как это записать?
Спасибо большое.
|
Очень приблизительный и кривой вариант (на коленке писал, опять винды нет под рукой):
Код:
findstr -C:"SET SST_BRM" selhdw.dll
if ERRORLEVEL 0 (
findstr -C:"SET SST_CDM"
if ERRORLEVEL 0 (
echo not found
) else (
echo start file2.exe
)
) else (
echo start file1.exe
)
Ну и да, сейчас не я так кто-нибудь другой (скорей всего Iska) задаст справедливые вопросы о структуре файла, кодировке, концах строк, сколько раз может значение повторяться в файле, почему не posh, ну и наконец затребуют либо сам файл либо как минимум фрагмент с искомой строчкой (но лучше файл, мне вот очень интересно посмотреть на dll которая просто так берет и читается).
|
Вложений: 1
Файл, очень простой =) прилагаю,переименовал в txt
|
Ну тогда если этот параметр гарантированно не повторяется (т.е. в одном файле не будет и SET SST_BRM, и SET SST_CDM, то вариант во втором посте должнон худо-бедно сработать.
|
Вложений: 1
Цитата:
Цитата Elven
Ну тогда если этот параметр гарантированно не повторяется (т.е. в одном файле не будет и SET SST_BRM, и SET SST_CDM, то вариант во втором посте должнон худо-бедно сработать. »
|
Попробовал, вот что вышло. прилагаю скрин Файл 163924
|
Вроде, разобрался.
Сделал вот так
findstr -C:"SET SST_CDMTYPE=BRM_SWAPPED" C:\selhdw.dll
echo %ERRORLEVEl%
if "%ERRORLEVEL%"=="0" start D:\file1.txt
findstr -C:"SET SST_CDMTYPE=MDM" C:\selhdw.dll
echo %ERRORLEVEl%
if "%ERRORLEVEL%"=="0" start D:\file2.txt
|
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
type "C:\selhdw.dll" | findstr.exe /l /c:"SET SST_CDMTYPE=BRM_SWAPPED" && start "" "D:\file1.txt"
type "C:\selhdw.dll" | findstr.exe /l /c:"SET SST_CDMTYPE=MDM" && start "" "D:\file2.txt"
endlocal
exit /b 0
Хотя выше Вы писали про другое условие:
Цитата:
Цитата RS_WOOLF
Если например
SET SST_BRM то запускать файл 1
если
SET SST_CDM то запускать файл 2 »
|
|
Цитата:
Цитата Iska
@echo off
setlocal enableextensions enabledelayedexpansion
type "C:\selhdw.dll" | findstr.exe /l /c:"SET SST_CDMTYPE=BRM_SWAPPED" && start "" "D:\file1.txt"
type "C:\selhdw.dll" | findstr.exe /l /c:"SET SST_CDMTYPE=MDM" && start "" "D:\file2.txt"
endlocal
exit /b 0 »
|
Iska, отлично, так лучше.
Все работает.
Спасибо огромное Iska и Elven=)
|
Iska, не поверишь, опять забыл про && и || , хотя КАЖДЫЙ ДЕНЬ ими пользуюсь (если и не обоими, то по крайней мере && так точно)
|
Elven, верю. Сам такой :).
|
Iska, Ку! скрипач type не нужен
Код:
@Echo Off
Set "File=Z:\Box_In\selhdw.dll"
findstr.exe /l /c:"SET SST_CDMTYPE=BRM_SWAPPED" "%File%" &&start "" "D:\file1.txt"
findstr.exe /l /c:"SET SST_CDMTYPE=MDM" "%File%" &&start "" "D:\file2.txt"
Exit /B
|
Код:
@echo on
SET SST_BRM=a
SET SST_CDM=b
SET SST_|>nul find "BRM"&& echo file1
SET SST_|>nul find "CDM"&& echo file2
pause
------
File.txt
SET SST_BRM=a
SET SST_CDM=b
Код:
@echo on
for /f "delims=" %%a in (File.txt) do @%%a
SET SST_|>nul find "BRM"&& echo file1
SET SST_|>nul find "CDM"&& echo file2
pause
|
Время: 15:55.
© OSzone.net 2001-