Показать полную графическую версию : [решено] Проверить запись в BAT файле
RS_WOOLF
05-03-2021, 09:43
Всем привет.
Новичок в Батниках, поэтому такой вопрос.
Есть файл 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 которая просто так берет и читается).
RS_WOOLF
05-03-2021, 10:19
Файл, очень простой =) прилагаю,переименовал в txt
Ну тогда если этот параметр гарантированно не повторяется (т.е. в одном файле не будет и SET SST_BRM, и SET SST_CDM, то вариант во втором посте должнон худо-бедно сработать.
RS_WOOLF
05-03-2021, 12:02
Ну тогда если этот параметр гарантированно не повторяется (т.е. в одном файле не будет и SET SST_BRM, и SET SST_CDM, то вариант во втором посте должнон худо-бедно сработать. »
Попробовал, вот что вышло. прилагаю скрин 163924
RS_WOOLF
05-03-2021, 12:44
Вроде, разобрался.
Сделал вот так
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
Хотя выше Вы писали про другое условие:
Если например
SET SST_BRM то запускать файл 1
если
SET SST_CDM то запускать файл 2 »
RS_WOOLF
05-03-2021, 14:17
@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, верю. Сам такой :).
megaloman
06-03-2021, 09:46
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
------
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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.