Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Проверить запись в BAT файле (http://forum.oszone.net/showthread.php?t=348145)

RS_WOOLF 05-03-2021 09:43 2951798

Проверить запись в BAT файле
 
Всем привет.

Новичок в Батниках, поэтому такой вопрос.

Есть файл selhdw.dll
В нем есть строка
SET SST_....

Необходимо с помощью батника проверить наличие записи которое идет после SET SST...

Если например
SET SST_BRM то запускать файл 1
если
SET SST_CDM то запускать файл 2

Подскажите пожалуйста как это записать?
Спасибо большое.

Elven 05-03-2021 10:11 2951800

Очень приблизительный и кривой вариант (на коленке писал, опять винды нет под рукой):
Код:

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 2951802

Вложений: 1
Файл, очень простой =) прилагаю,переименовал в txt

Elven 05-03-2021 11:41 2951807

Ну тогда если этот параметр гарантированно не повторяется (т.е. в одном файле не будет и SET SST_BRM, и SET SST_CDM, то вариант во втором посте должнон худо-бедно сработать.

RS_WOOLF 05-03-2021 12:02 2951809

Вложений: 1
Цитата:

Цитата Elven
Ну тогда если этот параметр гарантированно не повторяется (т.е. в одном файле не будет и SET SST_BRM, и SET SST_CDM, то вариант во втором посте должнон худо-бедно сработать. »

Попробовал, вот что вышло. прилагаю скрин Файл 163924

RS_WOOLF 05-03-2021 12:44 2951810

Вроде, разобрался.
Сделал вот так

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

Iska 05-03-2021 13:47 2951814

Код:

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


RS_WOOLF 05-03-2021 14:17 2951815

Цитата:

Цитата 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=)

Elven 05-03-2021 21:51 2951852

Iska, не поверишь, опять забыл про && и || , хотя КАЖДЫЙ ДЕНЬ ими пользуюсь (если и не обоими, то по крайней мере && так точно)

Iska 05-03-2021 23:36 2951864

Elven, верю. Сам такой :).

megaloman 06-03-2021 09:46 2951876

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


alpap 06-03-2021 19:59 2951912

Код:

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

Время: 15:55.
© OSzone.net 2001-