Готовые решения

Обсуждение программ nnCron и nnCron LITE

Re: ПОЧЕМУ-БЫ НЕ СОЗДАТЬ ТЕМУ *ветку *ГОТОВЫЕ РЕШЕНИЯ

Postby VoidVolker » Wed, 24 Oct 2012, 20:48

Опять те-же самые ошибки:
Code: Select all
S" %WATCH-PROC-ID PROC-NAME%" EVAL-SUBST

=
Code: Select all
WATCH-PROC-ID PROC-NAME
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: ПОЧЕМУ-БЫ НЕ СОЗДАТЬ ТЕМУ *ветку *ГОТОВЫЕ РЕШЕНИЯ

Postby ask » Fri, 26 Oct 2012, 11:30

Это не ошибка, а просто неэффективный код. Исправить легко, просто я делюсь тем, что писал давным-давно.
Следующий скрипт поправил :)

Итак, запуск всех процессов отслеживается. Не менее интересно отслеживать и останов процессов.
Не секрет, что после завершения многих задач остаётся куча мусорных файлов, которые не грех и "почикать".
А при завешении некоторых "сложно-составных" приложений (например, VMware) имеет смысл остановить некоторые службы.
Вот раздел файла, содержащего описания, что делать при остановке каждого указанного процесса:
Code: Select all
[ProcessStop]
Count=29
Log=

[ProcessStop_1]
Name=rko_client.exe
FileCount=4

[ProcessStop_1_1]
DirType=TEMP
FileTempl=*.frf
Recursive=No
WithDir=No

[ProcessStop_1_2]
DirType=TEMP
FileTempl=*.fr3
Recursive=No
WithDir=No

[ProcessStop_1_3]
DirType=TEMP
FileTempl=*.pas
Recursive=No
WithDir=No

[ProcessStop_1_4]
DirType=TEMP
FileTempl=*.tmp
Recursive=No
WithDir=No


[ProcessStop_2]
Name=asp_srv.exe
FileCount=4

[ProcessStop_2_1]
DirType=TEMP
FileTempl=*.idx
Recursive=No
WithDir=No

[ProcessStop_2_2]
DirType=TEMP
FileTempl=*.lst
Recursive=No
WithDir=No

[ProcessStop_2_3]
DirType=TEMP
FileTempl=*.tmp
Recursive=No
WithDir=No

[ProcessStop_2_4]
DirType=TEMP
FileTempl=*.cvr
Recursive=No
WithDir=No

[ProcessStop_3]
Name=xnview.exe
FileCount=2

[ProcessStop_3_1]
DirType=TEMP
FileTempl=category.*
Recursive=No
WithDir=No

[ProcessStop_3_2]
DirType=TEMP
FileTempl=XnView.db
Recursive=No
WithDir=No


[ProcessStop_4]
Name=UltraISO.exe
FileCount=1

[ProcessStop_4_1]
DirType=TEMP
FileTempl=Ultra$ISO
Recursive=Yes
WithDir=Yes


[ProcessStop_5]
Name=ci.exe
FileCount=3

[ProcessStop_5_1]
DirType=TEMP
FileTempl=gentee*
Recursive=Yes
WithDir=Yes

[ProcessStop_5_2]
DirType=TEMP
FileTempl=gentee*.*
Recursive=No
WithDir=No

[ProcessStop_5_3]
DirType=RealDir
RealDir=C:\MY_DISTRIB
FileTempl=*.log
WithDir=Yes
Recursive=Yes


[ProcessStop_6]
Name=cicmd.exe
FileCount=3

[ProcessStop_6_1]
DirType=TEMP
FileTempl=gentee*
Recursive=Yes
WithDir=Yes

[ProcessStop_6_2]
DirType=TEMP
FileTempl=gentee*.*
Recursive=No
WithDir=No

[ProcessStop_6_3]
DirType=RealDir
FileTempl=*.log
WithDir=No
Recursive=Yes
RealDir=C:\MY_DISTRIB


[ProcessStop_7]
Name=bsplayer.exe
FileCount=1

[ProcessStop_7_1]
DirType=TEMP
FileTempl=FTMP*.0E0
Recursive=Yes
WithDir=Yes


[ProcessStop_8]
Name=Opera.exe
FileCount=22

[ProcessStop_8_1]
DirType=TEMP
FileTempl=CACHEDIR.TAG
Recursive=No
WithDir=No

[ProcessStop_8_2]
DirType=TEMP
FileTempl=activity.opr
Recursive=No
WithDir=No

[ProcessStop_8_3]
DirType=TEMP
FileTempl=dcache4.url
Recursive=No
WithDir=No

[ProcessStop_8_4]
DirType=TEMP
FileTempl=WPDNSE
Recursive=Yes
WithDir=Yes

[ProcessStop_8_5]
DirType=TEMP
FileTempl=sesn
Recursive=Yes
WithDir=Yes

[ProcessStop_8_6]
DirType=TEMP
FileTempl=revocation
Recursive=Yes
WithDir=Yes

[ProcessStop_8_7]
DirType=TEMP
FileTempl=turbo
Recursive=Yes
WithDir=Yes

[ProcessStop_8_8]
DirType=TEMP
FileTempl=g_*
Recursive=Yes
WithDir=Yes

[ProcessStop_8_9]
DirType=TEMP
FileTempl=override_downloaded.ini
Recursive=No
WithDir=No

[ProcessStop_8_10]
DirType=TEMP
FileTempl=MemCrash*.bin
Recursive=No
WithDir=No

[ProcessStop_8_11]
DirType=TEMP
FileTempl=msohtmlclip*
Recursive=Yes
WithDir=Yes

[ProcessStop_8_12]
DirType=TEMP
FileTempl=assoc*
Recursive=Yes
WithDir=Yes

[ProcessStop_8_13]
DirType=TEMP
FileTempl=*.pdf
Recursive=No
WithDir=No

[ProcessStop_8_14]
DirType=TEMP
FileTempl=*.doc
Recursive=No
WithDir=No

[ProcessStop_8_15]
DirType=TEMP
FileTempl=*.rtf
Recursive=No
WithDir=No

[ProcessStop_8_16]
DirType=TEMP
FileTempl=*.xls
Recursive=No
WithDir=No

[ProcessStop_8_16]
DirType=TEMP
FileTempl=*.jpg
Recursive=No
WithDir=No

[ProcessStop_8_17]
DirType=TEMP
FileTempl=assoc*
Recursive=Yes
WithDir=Yes

[ProcessStop_8_18]
DirType=TEMP
FileTempl=*.fxv2*
Recursive=No
WithDir=No

[ProcessStop_8_19]
DirType=TEMP
FileTempl=Adobe
Recursive=Yes
WithDir=Yes

[ProcessStop_8_20]
DirType=TEMP
FileTempl=opera-*
Recursive=Yes
WithDir=Yes

[ProcessStop_8_21]
DirType=TEMP
FileTempl=cookies4.dat
Recursive=No
WithDir=No

[ProcessStop_8_22]
DirType=RealDir
RealDir=%USR_LOCAL_APPDATA%\Opera\Opera\vps
FileTempl=*.*
Recursive=Yes
WithDir=Yes


[ProcessStop_9]
Name=thebat.exe
FileCount=1

[ProcessStop_9_1]
DirType=TEMP
FileTempl=bat*.tmp
Recursive=No
WithDir=No


[ProcessStop_10]
Name=EXCEL.EXE
FileCount=3

[ProcessStop_10_1]
DirType=TEMP
FileTempl=Excel*
Recursive=Yes
WithDir=Yes

[ProcessStop_10_2]
DirType=TEMP
FileTempl=VBE
Recursive=Yes
WithDir=Yes

[ProcessStop_10_3]
DirType=TEMP
FileTempl=msohtml*
Recursive=Yes
WithDir=Yes


[ProcessStop_11]
Name=WinRAR.exe
FileCount=2

[ProcessStop_11_1]
DirType=TEMP
FileTempl=Rar$*.*
Recursive=No
WithDir=No

[ProcessStop_11_2]
DirType=TEMP
FileTempl=Rar$*.*
Recursive=Yes
WithDir=Yes


[ProcessStop_12]
Name=Rar.exe
FileCount=3

[ProcessStop_12_1]
DirType=TEMP
FileTempl=Rar$*.*
Recursive=No
WithDir=No

[ProcessStop_12_2]
DirType=TEMP
FileTempl=Rar$*.*
Recursive=Yes
WithDir=Yes

[ProcessStop_12_3]
DirType=TEMP
FileTempl=__rar_*.*
Recursive=No
WithDir=No


[ProcessStop_13]
Name=iexplore.exe
FileCount=5

[ProcessStop_13_1]
DirType=TEMP
FileTempl=*.tmp
Recursive=No
WithDir=No

[ProcessStop_13_2]
DirType=TEMP
FileTempl=java_install_reg.log
Recursive=No
WithDir=No

[ProcessStop_13_3]
DirType=TEMP
FileTempl=hs_err_pid3800.log
Recursive=No
WithDir=No

[ProcessStop_13_4]
DirType=TEMP
FileTempl=hsperfdata_*.*
Recursive=Yes
WithDir=Yes

[ProcessStop_13_5]
DirType=RealDir
RealDir=%TEMP%\TMP\Content.IE5
FileTempl=*.*
Recursive=Yes
WithDir=Yes


[ProcessStop_14]
Name=FRONTPG.EXE
FileCount=4

[ProcessStop_14_1]
DirType=TEMP
FileTempl=FrontPageTempDir
Recursive=Yes
WithDir=Yes

[ProcessStop_14_2]
DirType=TEMP
FileTempl=FRONTPG.log
Recursive=No
WithDir=No

[ProcessStop_14_3]
DirType=TEMP
FileTempl=FRONTPG.log
Recursive=No
WithDir=No

[ProcessStop_14_4]
DirType=TEMP
FileTempl=wecerr.txt
Recursive=No
WithDir=No


[ProcessStop_15]
Name=vmware.exe
FileCount=9
KillProcessCount=2
StopServiceCount=6

[ProcessStop_15_1]
DirType=TEMP
FileTempl=net_config_workstation.tmp
Recursive=No
WithDir=No

[ProcessStop_15_2]
DirType=TEMP
FileTempl=vminst.log
Recursive=No
WithDir=No

[ProcessStop_15_3]
DirType=TEMP
FileTempl=vmware-vmount*.log
Recursive=No
WithDir=No

[ProcessStop_15_4]
DirType=TEMP
FileTempl=vminst.log
Recursive=No
WithDir=No

[ProcessStop_15_5]
DirType=TEMP
FileTempl=vmware-*
Recursive=Yes
WithDir=Yes
Pause=5000

[ProcessStop_15_6]
DirType=RealDir
RealDir=G:\VMware\VMS\Windows 7 Ultimate\caches
FileTempl=*.*
WithDir=Yes
Recursive=Yes

[ProcessStop_15_7]
DirType=RealDir
RealDir=G:\VMware\VMS\Windows 7 x64\caches
FileTempl=*.*
WithDir=Yes
Recursive=Yes

[ProcessStop_15_8]
DirType=RealDir
RealDir=G:\VMware\VMS\Windows XP Professional\caches
FileTempl=*.*
WithDir=Yes
Recursive=Yes

[ProcessStop_15_9]
DirType=RealDir
RealDir=G:\VMware\VMS\work\caches
FileTempl=*.*
WithDir=Yes
Recursive=Yes


[StopService_15_1]
ProcessName=vmware-hostd.exe
ServiceName=VMware Workstation Server

[StopService_15_2]
ProcessName=vmount2.exe
ServiceName=VMware Virtual Mount Manager Extended

[StopService_15_3]
ProcessName=vmnat.exe
ServiceName=VMware NAT Service

[StopService_15_4]
ProcessName=vmnetdhcp.exe
ServiceName=VMware DHCP Service

[StopService_15_5]
ProcessName=vmware-usbarbitrator.exe
ServiceName=VMware USB Arbitration Service

[StopService_15_6]
ProcessName=vmware-authd.exe
ServiceName=VMware Authorization Service

[KillProcess_15_1]
ProcessName=vmware-tray.exe

[KillProcess_15_2]
ProcessName=hqtray.exe



[ProcessStop_16]
Name=vmware-hostd.exe
FileCount=4

[ProcessStop_16_1]
DirType=TEMP
FileTempl=net_config_workstation.tmp
Recursive=No
WithDir=No

[ProcessStop_16_2]
DirType=TEMP
FileTempl=vminst.log
Recursive=No
WithDir=No

[ProcessStop_16_3]
DirType=TEMP
FileTempl=vmware-vmount*.log
Recursive=No
WithDir=No

[ProcessStop_16_4]
DirType=TEMP
FileTempl=vmware-*
Recursive=Yes
WithDir=Yes


[ProcessStop_17]
Name=WINWORD.EXE
FileCount=7

[ProcessStop_17_1]
DirType=TEMP
FileTempl=msohtmlclip*
Recursive=Yes
WithDir=Yes

[ProcessStop_17_2]
DirType=TEMP
FileTempl=msohtml*
Recursive=Yes
WithDir=Yes

[ProcessStop_17_3]
DirType=TEMP
FileTempl=VBE
Recursive=Yes
WithDir=Yes

[ProcessStop_17_4]
DirType=TEMP
FileTempl=WPDNSE
Recursive=Yes
WithDir=Yes

[ProcessStop_17_5]
DirType=TEMP
FileTempl=*.od
Recursive=No
WithDir=No

[ProcessStop_17_6]
DirType=TEMP
FileTempl=LoadedBodyStream*.out
Recursive=No
WithDir=No

[ProcessStop_17_7]
DirType=RealDir
RealDir=%USR_INTERNET_CACHE%\Content.Word
FileTempl=*.*
Recursive=No
WithDir=No

[ProcessStop_18]
Name=OUTLOOK.EXE
KillProcessCount=2
FileCount=4

[KillProcess_18_1]
ProcessName=asp_srv.exe

[KillProcess_18_2]
ProcessName=OFFLB.EXE

[ProcessStop_18_1]
DirType=TEMP
FileTempl=ExchangePerflog*.dat
Recursive=No
WithDir=No

[ProcessStop_18_2]
DirType=TEMP
FileTempl=Perflib_Perfdata*.dat
Recursive=No
WithDir=No

[ProcessStop_18_3]
DirType=RealDir
RealDir=%USR_INTERNET_CACHE%\Content.Outlook
FileTempl=*.*
Recursive=Yes
WithDir=Yes

[ProcessStop_18_4]
DirType=TEMP
FileTempl=SetupExe*.log
Recursive=No
WithDir=No


[ProcessStop_19]
Name=TrueImage.exe
StopServiceCount=2

[StopService_19_1]
ProcessName=schedul2.exe
ServiceName=Acronis Scheduler2 Service


[ProcessStop_20]
Name=PDCmd.exe
StopServiceCount=2

[StopService_20_1]
ProcessName=PD91Engine.exe
ServiceName=PD91Engine

[StopService_20_2]
ProcessName=PD91Agent.exe
ServiceName=PD91Agent


[ProcessStop_21]
Name=PDFTRA~1.EXE
KillProcessCount=1
ServiceName=VMware USB Arbitration Service

[KillProcess_21_1]
ProcessName=pdfSaver3a.exe



[ProcessStop_22]
Name=bcb.exe
FileCount=4


[ProcessStop_22_1]
DirType=RealDir
RealDir=%TEMP%\TEMP
FileTempl=vcl*.*
Recursive=No
WithDir=No

[ProcessStop_22_2]
DirType=RealDir
RealDir=D:\TEMP
FileTempl=vcl*.*
Recursive=No
WithDir=No

[ProcessStop_22_3]
DirType=RealDir
RealDir=G:\TEMP
FileTempl=vcl*.*
Recursive=No
WithDir=No

[ProcessStop_22_4]
DirType=TEMP
FileTempl=QRP*.tmp
Recursive=No
WithDir=No


[ProcessStop_23]
Name=AutoGK.exe
FileCount=3

[ProcessStop_23_1]
DirType=TEMP
FileTempl=agk_tmp
Recursive=Yes
WithDir=Yes

[ProcessStop_23_2]
DirType=TEMP
FileTempl=agk.tbl
Recursive=No
WithDir=No

[ProcessStop_23_3]
DirType=TEMP
FileTempl=agk.tbl
Recursive=No
WithDir=No

[ProcessStop_24]
Name=offlb.exe
FileCount=2

[ProcessStop_24_1]
DirType=TEMP
FileTempl=WPDNSE
Recursive=Yes
WithDir=Yes

[ProcessStop_24_1]
DirType=TEMP
FileTempl=msohtml*
Recursive=Yes
WithDir=Yes

[ProcessStop_25]
Name=Far.exe
FileCount=2

[ProcessStop_25_1]
DirType=TEMP
FileTempl=FTMP*.*
Recursive=Yes
WithDir=Yes

[ProcessStop_25_2]
DirType=TEMP
FileTempl=Tree.Far
Recursive=No
WithDir=No

[ProcessStop_26]
Name=WScript.exe
FileCount=2

[ProcessStop_26_1]
DirType=TEMP
FileTempl=VBE
Recursive=Yes
WithDir=Yes

[ProcessStop_26_2]
DirType=TEMP
FileTempl=WPDNSE
Recursive=Yes
WithDir=Yes

[ProcessStop_27]
Name=msseces.exe
FileCount=1

[ProcessStop_27_1]
DirType=TEMP
FileTempl=MpCmdRun.log
Recursive=No
WithDir=No

[ProcessStop_28]
Name=TeamViewer.exe
FileCount=1

[ProcessStop_28_1]
DirType=TEMP
FileTempl=TeamViewer
Recursive=Yes
WithDir=Yes

[ProcessStop_29]
Name=Skype.exe
FileCount=1
StopServiceCount=1
FileCount=1

[StopService_29_1]
ProcessName=Updater.exe
ServiceName=Skype Updater

[ProcessStop_29_1]
DirType=RealDir
RealDir=%USR_INTERNET_CACHE%\Content.IE5
FileTempl=*.*
WithDir=Yes
Recursive=Yes


А вот обрабатывающий это дело скрипт:
Code: Select all
<%
USER-CREATE ARC_NAME 250 USER-ALLOT
%>


#( OnAnyProcStop
NoLog
NoDel
HyperActive
WatchProcStop: "*"

USER-CREATE     PRCN_S            80         USER-ALLOT
USER-CREATE     PC_COUNT          10         USER-ALLOT
\ USER-CREATE     PC_SECTION        80         USER-ALLOT
USER-CREATE     PC_NAME           80         USER-ALLOT
USER-CREATE     PC_F_COUNT        10         USER-ALLOT
USER-CREATE     PC_F_DIR_TYPE     80         USER-ALLOT
USER-CREATE     PC_F_TEMPL        80         USER-ALLOT
USER-CREATE     PC_F_RECURSIVE    10         USER-ALLOT
USER-CREATE     PC_F_WITH_DIR     10         USER-ALLOT
USER-CREATE     PC_F_DIR          10         USER-ALLOT
USER-CREATE     PC_LOG            10         USER-ALLOT
USER-CREATE     PC_REAL_DIR      256         USER-ALLOT
USER-CREATE     PROCESS_INI_NAME 256         USER-ALLOT
USER-CREATE     PC_ID             10         USER-ALLOT
USER-CREATE     PC_PRC_NAME       80         USER-ALLOT
USER-CREATE     PC_SRV_NAME       80         USER-ALLOT

USER B
USER PC_I
USER PC_F_I

Action:
SWHide   NormalPriority

  FILE-EXIST: "%ASKCRON_INI COUNT%"
  IF
    \ Найдём просесс с этим PID среди ранее запущенных процессов
    S" %TEMP%\Processes.ini"          EVAL-SUBST PROCESS_INI_NAME PLACE
    S" %WATCH-PROC-ID%"               EVAL-SUBST PC_ID            PLACE

    PROCESS_INI_NAME COUNT            INI-FILENAME
    S" Processes"                     INI-SECTION
    PC_ID COUNT                       INI-GET-VALUE PRCN_S PLACE
   
    PRCN_S COUNT S" " COMPARE 0= NOT  RE-MATCH: "%PRCN_S COUNT%" "%PC_EXCLUDE COUNT%" NOT AND
    IF
      \ Удалить этот параметр из "%TEMP%\Processes.ini"
      PRCN_S COUNT S" default value" COMPARE 0= NOT
      IF
        PROCESS_INI_NAME COUNT  INI-FILENAME
        S" Processes"           INI-SECTION
        PC_ID COUNT S" "        INI-DEL-VALUE
      THEN
     
      \ Если процесс с таким PID найден в логе запускавшихся процессов и если БОЛЬШЕ НЕТ процессов с таким именем
      PRCN_S COUNT S" default value" COMPARE 0= NOT            PRCN_S COUNT PROC-EXIST? NOT AND
      IF
        ASKCRON_INI COUNT INI-FILENAME
        S" ProcessStop"   INI-SECTION
        S" Count"         INI-GET-VALUE PC_COUNT PLACE
        S" Log"           INI-GET-VALUE PC_LOG   PLACE
       
        PC_COUNT COUNT S" " COMPARE 0= NOT PC_COUNT COUNT S" 0" COMPARE 0= NOT PC_COUNT COUNT S" default value" COMPARE 0= NOT AND AND
        IF
          0 PC_I !
         
          PC_COUNT COUNT S>NUM 0 DO
            PC_I @ 1 + PC_I !
           
            \ S" ProcessStop_%PC_I @%"          EVAL-SUBST PC_SECTION PLACE
            \ PC_SECTION COUNT                  INI-SECTION
            " ProcessStop_%PC_I @ N>S%"         INI-SECTION
           
            S" Name"            INI-GET-VALUE PC_NAME PLACE
           
            \ Если имя остановленного процесса найдено в INI-шке (этот вариант - сравнение без учёта регистра букв)
            RE-MATCH: "%PRCN_S COUNT%" "/%PC_NAME COUNT%/i"
            IF
              \ Нарыть кол-во удаляемых файлов
              S" FileCount" INI-GET-VALUE PC_F_COUNT PLACE
             
              PC_F_COUNT COUNT S" " COMPARE 0= NOT PC_F_COUNT COUNT S" 0" COMPARE 0= NOT PC_F_COUNT COUNT S" default value" COMPARE 0= NOT AND AND
              IF
                0 PC_F_I !
               
                PC_F_COUNT COUNT S>NUM 0 DO
                  PC_F_I @ 1 + PC_F_I !
             
                  \ S" ProcessStop_%PC_I @%_%PC_F_I @%" EVAL-SUBST PC_SECTION PLACE
                  \ PC_SECTION COUNT INI-SECTION
                  " ProcessStop_%PC_I @ N>S%_%PC_F_I @ N>S%"  INI-SECTION
                 
                  S" DirType"   INI-GET-VALUE            PC_F_DIR_TYPE  PLACE
                  S" FileTempl" INI-GET-VALUE            PC_F_TEMPL     PLACE
                  S" Recursive" INI-GET-VALUE            PC_F_RECURSIVE PLACE
                  S" WithDir"   INI-GET-VALUE            PC_F_WITH_DIR  PLACE
                  S" RealDir"   INI-GET-VALUE EVAL-SUBST PC_REAL_DIR    PLACE
                 
                  \ Определить папку, из которой удаляем мусор
                  PC_F_DIR_TYPE COUNT S" TEMP" COMPARE 0=
                  IF
                    S" %TEMP%" EVAL-SUBST PC_F_DIR PLACE
                  ELSE
                    PC_F_DIR_TYPE COUNT S" ApplicationData" COMPARE 0=
                    IF
                      S" %FOLDER-APP-DATA%" EVAL-SUBST PC_F_DIR PLACE
                    ELSE
                      PC_F_DIR_TYPE COUNT S" RealDir" COMPARE 0=
                      IF
                        S" %PC_REAL_DIR COUNT%" EVAL-SUBST PC_F_DIR PLACE
                      THEN
                    THEN
                  THEN
                 
                  FILE-EXIST: "%PC_F_DIR COUNT%\"
                  IF
                    PC_LOG COUNT S" Yes" COMPARE 0=
                    IF
                      LOG: "%TEMP%\Удаляемые файлы.log" "(%PRCN_S COUNT%) %hh%:%mm%:%ss%  %PC_F_DIR COUNT%\%PC_F_TEMPL COUNT%"
                    THEN
                   
                    PC_F_RECURSIVE COUNT S" Yes" COMPARE 0=
                    IF
                      SKIPERRORS
                      FOR-FILES: "%PC_F_DIR COUNT%\%PC_F_TEMPL COUNT%"
                        FILE-EXIST: "%FOUND-FULLPATH%\"
                        IF
                          PC_F_WITH_DIR COUNT S" Yes" COMPARE 0=
                          IF
                            RECURSIVE WITHDIRS SKIPERRORS
                            DIR-DELETE: "%FOUND-FULLPATH%"
                          ELSE
                            RECURSIVE SKIPERRORS
                            FILE-DELETE: "%FOUND-FULLPATH%"
                          THEN
                        THEN
                      ;FOR-FILES
                    ELSE
                      FILE-EXIST: "%PC_F_DIR COUNT%\%PC_F_TEMPL COUNT%"
                      IF
                        FILE-DELETE: "%PC_F_DIR COUNT%\%PC_F_TEMPL COUNT%"
                      THEN
                    THEN
                  THEN
                LOOP
              THEN
             
              \ Нарыть кол-во останавливаемых сервисов
              ASKCRON_INI COUNT           INI-FILENAME
              \ S" ProcessStop_%PC_I @%"    EVAL-SUBST PC_SECTION PLACE
              \ PC_SECTION COUNT            INI-SECTION
              " ProcessStop_%PC_I @ N>S%"       INI-SECTION
             
              S" StopServiceCount"        INI-GET-VALUE PC_F_COUNT PLACE
             
              PC_F_COUNT COUNT S" " COMPARE 0= NOT PC_F_COUNT COUNT S" 0" COMPARE 0= NOT PC_F_COUNT COUNT S" default value" COMPARE 0= NOT AND AND
              IF
                0 PC_F_I !
               
                PC_F_COUNT COUNT S>NUM 0 DO
                  PC_F_I @ 1 + PC_F_I !
                 
                  \ S" StopService_%PC_I @%_%PC_F_I @%" EVAL-SUBST PC_SECTION PLACE
                  \ PC_SECTION COUNT INI-SECTION
                  " StopService_%PC_I @ N>S%_%PC_F_I @ N>S%"   INI-SECTION
                 
                  S" ProcessName"   INI-GET-VALUE PC_PRC_NAME PLACE
                  S" ServiceName"   INI-GET-VALUE PC_SRV_NAME PLACE
                 
                  PROC-EXIST: "%PC_PRC_NAME COUNT%"
                  IF
                    START-APP: net stop "%PC_SRV_NAME COUNT%"
                  THEN
                LOOP
              THEN
             
              \ Нарыть кол-во убиваемых процессов
              ASKCRON_INI COUNT           INI-FILENAME
             
              \ S" ProcessStop_%PC_I @%"    EVAL-SUBST PC_SECTION PLACE
              \ PC_SECTION COUNT            INI-SECTION
              " ProcessStop_%PC_I @ N>S%"   INI-SECTION
             
              S" KillProcessCount" INI-GET-VALUE PC_F_COUNT PLACE
             
              PC_F_COUNT COUNT S" " COMPARE 0= NOT PC_F_COUNT COUNT S" 0" COMPARE 0= NOT PC_F_COUNT COUNT S" default value" COMPARE 0= NOT AND AND
              IF
                0 PC_F_I !
               
                PC_F_COUNT COUNT S>NUM 0 DO
                  PC_F_I @ 1 + PC_F_I !
                 
                  \ S" KillProcess_%PC_I @%_%PC_F_I @%" EVAL-SUBST PC_SECTION PLACE
                  \ PC_SECTION COUNT INI-SECTION
                  " KillProcess_%PC_I @ N>S%_%PC_F_I @ N>S%" INI-SECTION
                 
                  S" ProcessName"   INI-GET-VALUE PC_PRC_NAME PLACE
                 
                  PROC-EXIST: "%PC_PRC_NAME COUNT%"
                  IF
                    KILL: "%PC_PRC_NAME COUNT%"
                  THEN
                LOOP
              THEN
     
             
              TRAY-REFRESH
             
              LEAVE \ Дело сделано. Выйти из цикла
            THEN
          LOOP
        THEN
      THEN
    THEN
  THEN
)#

ask
 
Posts: 55
Joined: Sun, 11 Dec 2011, 09:38

Re: ПОЧЕМУ-БЫ НЕ СОЗДАТЬ ТЕМУ *ветку *ГОТОВЫЕ РЕШЕНИЯ

Postby ask » Sun, 28 Oct 2012, 16:17

Три полезных слова.

1. REG-VALUE-EXIST? - проверяет, существует ли указанный параметр (не ключ!) в реестре. Стырил с англоязычного форума.
2. CRON-SERVICE? - установлен ли nnCron, как сервис (служба)
3. WINx64? - Является ли Windows 64-битной

Code: Select all
: REG-VALUE-EXIST? ( a u -- ?)
    1024 ALLOCATE THROW DUP >R ROT ROT
   
    [NONAME GET-REG NONAME] CATCH
    IF
      2DROP DROP
      FALSE
    ELSE
      TRUE
    THEN
   
    R> FREE DROP
;

: CRON-SERVICE? ( n -- ? )
  S" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nnCron\ImagePath" REG-VALUE-EXIST?
  IF
    TRUE
  ELSE
    FALSE
  THEN
;

: WINx64? ( n -- ? )
  S" HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir (x86)" REG-VALUE-EXIST?
  IF
    TRUE
  ELSE
    FALSE
  THEN
;
ask
 
Posts: 55
Joined: Sun, 11 Dec 2011, 09:38

Re: ПОЧЕМУ-БЫ НЕ СОЗДАТЬ ТЕМУ *ветку *ГОТОВЫЕ РЕШЕНИЯ

Postby VoidVolker » Sun, 28 Oct 2012, 16:41

Есть плагин с дополнительными словами для работы с реестром: viewtopic.php?f=5&t=11010
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re:

Postby anten » Mon, 17 Mar 2014, 23:49

VoidVolker wrote:Вот, сделал почти с нуля скрипт шпиён-диверсант :) Записывает в файл все нажатия кнопок и движения курсора, а потом может это все воспроизвести, по умолчанию точность 10 миллисекунд.

я так понял, что должен всё сливать в файл "script.log"?
anten
 
Posts: 17
Joined: Sat, 17 Mar 2012, 23:13

Re: Готовые решения

Postby VoidVolker » Tue, 18 Mar 2014, 00:48

Не помню =) А вообще, там описание должно быть.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Готовые решения

Postby anten » Tue, 18 Mar 2014, 09:51

VoidVolker wrote:Не помню =) А вообще, там описание должно быть.

а я напомню:)
Code: Select all
    #( Запись!
    \  NoActive
    WatchHotKey: "@r"
    NoLog SingleInstance
    : N>SBL  N>S S"  " S+ ;
    : N>SBL+  N>SBL S+ ;

    \ Кейлоггинг
    VARIABLE start-time
    CREATE LogKeyDN 255 ALLOT
    : LogKeyDN! LogKeyDN + C! ; ( x code -- )
    : LogKeyDN@ LogKeyDN + C@ ; ( code -- )

    : log-code
    >R
    GetTickCount start-time @ - N>SBL
    R> N>SBL+ crlf S+
    S" script.log" FAPPEND
    ;

    : LOG-ANYKEY-PRESSED
    255 1 DO  I KEY-PRESSED?
       IF   \ Лог нажатия кнопки
          I LogKeyDN@ 0=
          IF   \ в прошлый проход эта кнопка была не нажата?
             I log-code -1 I LogKeyDN!
          THEN
       ELSE   \ Лог отпускания
          I LogKeyDN@
          IF   \ нажималась ли эта кнопка?
             I NEGATE log-code
             0 I LogKeyDN!
          THEN
       THEN
    LOOP
    ;

    \ ху-логгинг
    : log-moving  >R >R
    GetTickCount start-time @ - N>SBL
    0 N>SBL+
    R> N>SBL+ R> N>SBL+ crlf S+
    S" script.log" FAPPEND
    ;
    VARIABLE x-pos
    VARIABLE y-pos
    : LOG-MMoving
    MOUSE-POS x-pos @ y-pos @ D<> IF MOUSE-POS 2DUP log-moving y-pos ! x-pos ! THEN
    ;

    : Шпионить
    BEGIN
    10 PAUSE
    LOG-ANYKEY-PRESSED
    LOG-MMoving
    VK_CONTROL KEY-PRESSED?
    UNTIL
    -17 log-code
    -162 log-code
    ;
    Action:
    300 300 BEEP S" script.log" FDELETE \ Опционально :)
    LogKeyDN 255 ERASE x-pos 0! y-pos 0!
    Шпионить
    GetTickCount start-time !
    300 300 BEEP
    )#

    <%
    : FOR-FLINES   { xt \ Lf Lc -- }   ( a u xt -- )
        R/O OPEN-FILE-SHARED THROW TO Lf
        258 ALLOCATE THROW TO Lc
        BEGIN Lc 1+ 255 Lf READ-LINE THROW WHILE
        Lc C!
        Lc xt EXECUTE
        REPEAT
        DROP
        Lf CLOSE-FILE DROP
    ;

    : KeyDN
    CASE
       1 OF MOUSE-LBDN ENDOF
       2 OF MOUSE-RBDN ENDOF
       DUP DUP OF specKeyDN ENDOF
    ENDCASE
    ;

    : KeyUP
    CASE
       1 OF MOUSE-LBUP ENDOF
       2 OF MOUSE-RBUP ENDOF
       DUP DUP OF specKeyUP ENDOF
    ENDCASE
    ;

    : Диверсия { \ x -- }
    COUNT <TIB
    get-number
    GetTickCount start-time @ - - DUP 0< IF DROP 0 THEN PAUSE
    get-number TO x
     x IF
       x 0> IF x KeyDN THEN
       x 0< IF x NEGATE KeyUP THEN
        ELSE
            get-number get-number MOUSE-MOVE
        THEN
    TIB>
    ;
    %>
    #( Воспроизведение@
    \  NoActive
    WatchHotKey: "@p"
    NoLog SingleInstance
    Action:
    300 300 BEEP
    GetTickCount start-time !
    S" script.log" ['] Диверсия FOR-FLINES
    300 300 BEEP
    )#
anten
 
Posts: 17
Joined: Sat, 17 Mar 2012, 23:13

Запуск / остановка виртуальных машин VirtualBox в один клик

Postby MuR » Wed, 11 Feb 2015, 17:54

Lynx - название виртуальной машины
Содержимое bat-файла или параметра ярлыка:
Code: Select all
D:\cron\nncron.exe -ns -dir D:\cron -runfile D:\cron\start_vm.task Lynx

Для тех, кто использует TotalCommander можно добавить кнопку с параметрами:
Spoiler: show
Command: D:\cron\nncron.exe
Parameters: -ns -dir D:\cron -runfile D:\cron\start_vm.task Lynx
Start path: D:\cron\

Содержимое d:\CRON\start_vm.task:
Spoiler: show
Code: Select all
CREATE vm_name 16 ALLOT \ Параметр - имя виртуальной машины для запуска
: main
  get-string vm_name PLACE
  SWHide
  StartIn: "d:\VirtualBox\"
  S" %COMSPEC% /c VBoxManage.exe list runningvms | find /I /N %QUOTE%%vm_name COUNT%%QUOTE% 2>NUL" EVAL-SUBST START-APPW

  SWHide
  StartIn: "d:\VirtualBox"

  ExitCodeProc 0= IF
    \ savestate - записать состояние на диск
    \ poweroff - завершает работу
    S" VBoxManage.exe controlvm %QUOTE%%vm_name COUNT%%QUOTE% savestate" START-APP
    THINT: "Stop" 2
  ELSE
    S" VBoxHeadless.exe -s %QUOTE%%vm_name COUNT%%QUOTE%" START-APP
    THINT: "Start" 2
  THEN
;
MuR
 
Posts: 27
Joined: Thu, 10 Nov 2005, 08:58

Re: Запуск / остановка виртуальных машин VirtualBox в один к

Postby ANR Daemon » Mon, 16 Feb 2015, 10:22

MuR wrote:Lynx - название виртуальной машины
Содержимое bat-файла или параметра ярлыка:
Code: Select all
D:\cron\nncron.exe -ns -dir D:\cron -runfile D:\cron\start_vm.task Lynx

Для тех, кто использует TotalCommander можно добавить кнопку с параметрами:
Spoiler: show
Command: D:\cron\nncron.exe
Parameters: -ns -dir D:\cron -runfile D:\cron\start_vm.task Lynx
Start path: D:\cron\

Содержимое d:\CRON\start_vm.task:
Spoiler: show
Code: Select all
CREATE vm_name 16 ALLOT \ Параметр - имя виртуальной машины для запуска
: main
  get-string vm_name PLACE
  SWHide
  StartIn: "d:\VirtualBox\"
  S" %COMSPEC% /c VBoxManage.exe list runningvms | find /I /N %QUOTE%%vm_name COUNT%%QUOTE% 2>NUL" EVAL-SUBST START-APPW

  SWHide
  StartIn: "d:\VirtualBox"

  ExitCodeProc 0= IF
    \ savestate - записать состояние на диск
    \ poweroff - завершает работу
    S" VBoxManage.exe controlvm %QUOTE%%vm_name COUNT%%QUOTE% savestate" START-APP
    THINT: "Stop" 2
  ELSE
    S" VBoxHeadless.exe -s %QUOTE%%vm_name COUNT%%QUOTE%" START-APP
    THINT: "Start" 2
  THEN
;


Зачем так сложно?
Почему просто не сделать ярлык на vboxheadless или даже ещё лучше - vboxmanage, с нужными ключами? (VBoxHeadless будет висеть открытым консольным окном и мешаться под руками.)
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Re: Готовые решения

Postby AleXH » Sat, 07 Mar 2015, 13:21

Для того, чтобы консольные окна не мешались под руками, можно заюзать TrayIt!, который соберёт все окна в стек в собственном значке в системтрее.
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Готовые решения

Postby ANR Daemon » Wed, 18 Mar 2015, 12:08

AleXH wrote:Для того, чтобы консольные окна не мешались под руками, можно заюзать TrayIt!, который соберёт все окна в стек в собственном значке в системтрее.

Безумно ценное замечание! Особенно в силу его бессмысленности.
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Previous

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot] and 0 guests

cron