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

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

Miko 27-10-2010 05:48 1528337

Авто запуск
 
Здравствуйте. Возможно не очень корректно указал тему но все же..

Не так давно я просил с помощью bat файл скопировать текст и сохранить его в текстовый файл. Получилось :

Код:

@(for /f "tokens=1* delims=: " %%a in ('findstr /birc:" *MPP-Width:" "C:\Program Files\File.txt"') do @echo %%b ) >MPP-Width.txt @(for /f "tokens=1* delims=: " %%a in ('findstr /birc:" *MPP-Height:" "C:\Program Files\File.txt"') do @echo %%b ) >MPP-Height.txt
Возможно ли сделать проверку в этом файле. Что бы было примерно так:

Есть программа "Test.exe" нужно что бы bat файл смотрел,если запустили test.exe - Он выполняет то что написано выше.

И еще,не могли бы вы написать обратный вариант bat файла который указан выше:

Bat файл должен найти строку "MPP-Height:" и "MPP-Width:" и дописать к этим строкам число которое я укажу. К примеру в File.txt указано :

"MPP-Height: 200" и "MPP-Width: 300" нужно что бы bat заменил на "MPP-Height: 300" и "MPP-Width: 400"

За ранее спасибо.

amel27 27-10-2010 08:06 1528373

Цитата:

Цитата Miko
что бы bat файл смотрел,если запустили test.exe - Он выполняет то что написано выше »

Код:

@echo off

tasklist|findstr /bic:"test.exe"&&(
for /f "tokens=1* delims=: " %%a in ('findstr /birc:" *MPP-Width:"  "C:\Program Files\File.txt"') do >MPP-Width.txt  echo %%b
for /f "tokens=1* delims=: " %%a in ('findstr /birc:" *MPP-Height:" "C:\Program Files\File.txt"') do >MPP-Height.txt echo %%b
)

Цитата:

Цитата Miko
К примеру в File.txt указано :
"MPP-Height: 200" и "MPP-Width: 300" нужно что бы bat заменил на "MPP-Height: 300" и "MPP-Width: 400" »

конкретная реализация зависит от структуры и назначения файла,
но т.к. этих данных нет, наиболее общий случай:
Код:

@echo off

set L1=MPP-Height:200
set L2=MPP-Height:300
call :REPLN "c:\Program Files\File.txt" L1 L2

set L1=MPP-Width:300
set L2=MPP-Width:400
call :REPLN "c:\Program Files\File.txt" L1 L2

EXIT/B

:REPLN %file% ByRef %LineFrom% ByRef %LineTo%
::-------------------------------------------
SETLOCAL DisableDelayedExpansion
(for /f "usebackq tokens=*" %%a in ("%~1") do (set "$a=%%a"
  SETLOCAL EnableDelayedExpansion
  if /i "!$a!"=="!%~2!" set "$a=!%~3!"
  echo !$a!
  ENDLOCAL ))>"%~dpn0.tmp"
copy /y "%~dpn0.tmp" "%~1">nul&& del "%~dpn0.tmp"
ENDLOCAL& GoTo :EOF


P.S. касаемо названия темы:

1 - выполнение батником команды при наличии в системе процесса;
2 - замена строки в текстовом файле

Miko 27-10-2010 09:07 1528391

Спасибо. Это то что нужно.

Возник еще один вопрос.. А можно заменить :
"MPP-Height: 200" и "MPP-Width: 300" нужно что бы bat заменил на "MPP-Height: 300" и "MPP-Width: 400"

На это:
"MPP-Height: 200" и "MPP-Width: 300" нужно что бы bat заменил на "MPP-Height: Файл который лежит в папке с bat" и "MPP-Width: Файл который лежит в папке с bat" - В принципе я могу это все оформить на Delphi но мне нужно на bat.

Если можно то хотелось бы готовый код.. Или "Очки" вручить.


Время: 20:12.

Время: 20:12.
© OSzone.net 2001-