CMD и BAT сценарии в задаче

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

CMD и BAT сценарии в задаче

Postby AlikasS » Mon, 28 Sep 2009, 06:17

аналог
<VBScript> ... </SCRIPT>
<JScript> ... </SCRIPT>
для BAT и CMD файлов

подключаем как плагин или пишем сразу в кронтабе
Code: Select all
<%
\ Позволяет писать команды bat (cmd) файлов прямо в тексте задачи
\ могут использоваться макро-переменные nnCron, окруженные с двух сторон знаками процента (%).
: script-exec2 ( a u a1 u1 --)
SCR-EXT 2!
S" %GetCurrentThreadId ABS%_%GetTickCount%.%SCR-EXT 2@%" EVAL-SUBST SCR-FNAME 2!
SCR-FNAME 2@ R/W CREATE-FILE 0=
IF >R
EVAL-SUBST R@ WRITE-FILE THROW
R> CLOSE-FILE DROP
S" %SCR-FNAME 2@%" EVAL-SUBST StartScriptApp
SCR-FNAME 2@ DELETE-FILE THROW
ELSE
2DROP
THEN
;
: bat-exec ( a u -- )  S" bat" script-exec2 ;
: cmd-exec ( a u -- )  S" cmd" script-exec2 ;
: <BATscript> ['] bat-exec S" </SCRIPT>" <script> ; IMMEDIATE
: <CMDscript> ['] bat-exec S" </SCRIPT>" <script> ; IMMEDIATE
%>


пример использования
Code: Select all
#( ~test-start-bat
AsLoggedUser
NoActive
Action:
 SWHide \ если нужен скрытый запуск

<BATscript>
cd c:\
HELP > helpcmd.txt
</SCRIPT>
)#
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: CMD и BAT сценарии в задаче

Postby VoidVolker » Wed, 30 Sep 2009, 15:09

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

Re: CMD и BAT сценарии в задаче

Postby AlikasS » Thu, 01 Oct 2009, 17:04

для интереса привязал так же QBASICscript (думаю понятно как сделать и сценарии какого языка можно писать )
теперь вопрос зачем это надо :-D
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: CMD и BAT сценарии в задаче

Postby alexvsm » Mon, 05 Oct 2009, 15:26

А возможно ли изменить код так, что бы файл запускался с помощью CMD.EXE? А то у меня шеллом 4NT стоит и .cmd он немного не так как надо обрабатывает.
alexvsm
 
Posts: 19
Joined: Fri, 29 Jun 2007, 12:22

Re: CMD и BAT сценарии в задаче

Postby AlikasS » Tue, 06 Oct 2009, 01:19

alexvsm wrote:А возможно ли изменить код так, что бы файл запускался с помощью CMD.EXE? А то у меня шеллом 4NT стоит и .cmd он немного не так как надо обрабатывает.

измени строку
Code: Select all
S" %SCR-FNAME 2@%" EVAL-SUBST StartScriptApp

на
Code: Select all
S" CMD.exe /c %SCR-FNAME 2@%" EVAL-SUBST StartScriptApp
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: CMD и BAT сценарии в задаче

Postby alexvsm » Tue, 06 Oct 2009, 07:55

Спасибо большое.
alexvsm
 
Posts: 19
Joined: Fri, 29 Jun 2007, 12:22

Re: CMD и BAT сценарии в задаче

Postby Игорь » Wed, 14 Oct 2009, 17:17

теперь вопрос зачем это надо

Мне очень надо. И давно. Спасибо за реализацию. Только можно сделать, чтобы nnCron вообще никаким макаром не трогал текст батника, не раскрывал переменные и не "ел" знаки процента? А то работают только самые простейшие батники.

Вот так уже ой :-(
Code: Select all
<BATscript>
@ECHO OFF
PAUSE
FOR %%A IN (IEXPRESS.EXE WEXTRACT.EXE MAKECAB.EXE ADVPACK.DLL W95INF32.DLL W95INF16.DLL  DUMMY.TXT) DO (
  IF NOT EXIST %WINDIR%\SYSTEM32\%%A ECHO %date% %time:~0,8% ERROR! Can't find %WINDIR%\SYSTEM32\%%A>>C:\test.txt
)
</SCRIPT>

PAUSE - чтобы заглянуть в текст батника в папке крона.
Игорь
 
Posts: 36
Joined: Tue, 17 Aug 2004, 02:25

Re: CMD и BAT сценарии в задаче

Postby AlikasS » Thu, 15 Oct 2009, 01:51

Code: Select all
<%
\ Позволяет писать команды bat (cmd) файлов прямо в тексте задачи
\ НЕ могут !!! использоваться макро-переменные nnCron, окруженные с двух сторон знаками процента (%).
\ строки с командами не обрабатываются ( - EVAL-SUBST) nncron
: script-exec2 ( a u a1 u1 --)
SCR-EXT 2!
S" %GetCurrentThreadId ABS%_%GetTickCount%.%SCR-EXT 2@%" EVAL-SUBST SCR-FNAME 2!
SCR-FNAME 2@ R/W CREATE-FILE 0=
IF >R
( EVAL-SUBST ) R@ WRITE-FILE THROW
R> CLOSE-FILE DROP
S" %SCR-FNAME 2@%" EVAL-SUBST StartScriptApp
SCR-FNAME 2@ DELETE-FILE THROW
ELSE
2DROP
THEN
;
: bat-exec ( a u -- )  S" bat" script-exec2 ;
: cmd-exec ( a u -- )  S" cmd" script-exec2 ;
: <BATscript> ['] bat-exec S" </SCRIPT>" <script> ; IMMEDIATE
: <CMDscript> ['] bat-exec S" </SCRIPT>" <script> ; IMMEDIATE
%>
Last edited by AlikasS on Sat, 17 Oct 2009, 04:42, edited 1 time in total.
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: CMD и BAT сценарии в задаче

Postby Игорь » Fri, 16 Oct 2009, 19:10

AlikasS
Все равно глотает знаки процента :tonqe:
Игорь
 
Posts: 36
Joined: Tue, 17 Aug 2004, 02:25

Re: CMD и BAT сценарии в задаче

Postby AlikasS » Sat, 17 Oct 2009, 04:44

есть такое, сам поспешил...
подправил предыдущий пост, попробуй
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: CMD и BAT сценарии в задаче

Postby Игорь » Sat, 17 Oct 2009, 21:20

Image
Игорь
 
Posts: 36
Joined: Tue, 17 Aug 2004, 02:25

Re: CMD и BAT сценарии в задаче

Postby AlikasS » Fri, 12 Feb 2010, 19:13

Code: Select all
\ File:         bat-script.spf
\ Author:       AlikasS
\ Date:         --
\ Modified:     09.01.10 ( CMD-EVAL-OFF / CMD-EVAL-OFF для переключения обработки %%)
\ 05.05.10 ( CMD-File USER переменная )
\ Words: <CMDscript> </SCRIPT> CMD-EVAL-OFF CMD-EVAL-ON CMD-File
\
\ Usage:
\ <CMDscript> <команды интепретатора> </SCRIPT>
\
\ Settings:
\ CMD-File - массив для изменения используемого командного интепретатора ( S" CMD.exe /c" CMD-File PLACE )
\ CMD-EVAL-OFF / CMD-EVAL-OFF - для включения/выключения обработки переменных nncron между знаками %% в тексте команд
\
\ Description:
\ 1. Позволяет писать команды bat (cmd) файлов прямо в тексте задачи
\ <CMDscript>
\ <команды интепретатора>
\ </SCRIPT>
\
\ 2. CMD-EVAL-ON - для включения возможности использоваться макро-переменные nnCron,
\ окруженные с двух сторон знаками процента (%).
\ но при этом командный интерпретатор не сможет обработать свои команды со знаком % ( %1 )
\ т.к. nncron обработает\съест все знаки %
\
\ 3. CMD-EVAL-OFF - (по умолчанию) %% не обрабатываются.
\
\ 4. CMD-File -смена командного интепретатора
\ S" CMD.exe /c" CMD-File PLACE

0 [IF]   \ this is a comment string

Example:

#( ~test-start-bat
AsLoggedUser
NoActive
Action:
 SWHide \ если необходим скрытый запуск батника
<CMDscript>
cd c:\
HELP > helpcmd.txt
</SCRIPT>
)#

[THEN]   \ this is a comment string

USER-CREATE CMD-File 250 USER-ALLOT
VECT <CMDscript-exec>

: script-exec2 ( a u a1 u1 --)
SCR-EXT 2!
S" %GetCurrentThreadId ABS%_%GetTickCount%.%SCR-EXT 2@%" EVAL-SUBST SCR-FNAME 2!
SCR-FNAME 2@ R/W CREATE-FILE 0=
IF >R
 R@ WRITE-FILE THROW
R> CLOSE-FILE DROP
CMD-File COUNT DUP IF S"  " S+ THEN S" %SCR-FNAME 2@%" S+ EVAL-SUBST StartScriptApp
SCR-FNAME 2@ DELETE-FILE THROW
ELSE
2DROP
THEN
;

: script-exec3 ( a u a1 u1 --)
SCR-EXT 2!
S" %GetCurrentThreadId ABS%_%GetTickCount%.%SCR-EXT 2@%" EVAL-SUBST SCR-FNAME 2!
SCR-FNAME 2@ R/W CREATE-FILE 0=
IF >R
EVAL-SUBST R@ WRITE-FILE THROW
R> CLOSE-FILE DROP
CMD-File COUNT  DUP IF S"  " S+ THEN S" %SCR-FNAME 2@%" S+ EVAL-SUBST StartScriptApp
SCR-FNAME 2@ DELETE-FILE THROW
ELSE
2DROP
THEN
;

: CMD-EVAL-OFF ['] script-exec2 TO <CMDscript-exec> ; CMD-EVAL-OFF
: CMD-EVAL-ON ['] script-exec3 TO <CMDscript-exec> ;

: cmd-exec ( a u -- )  S" cmd" <CMDscript-exec> ;
: <CMDscript> ['] cmd-exec S" </SCRIPT>" <script> ; IMMEDIATE
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: CMD и BAT сценарии в задаче

Postby AlikasS » Fri, 24 Jun 2011, 16:22

Code: Select all
#( описать_шары
NoActive
\ создает два файла, один - все компы в сетке
\ второй - все шары у компов
Action:
<CMDscript>
chcp 1251 &
FOR /F "eol=T skip=3 tokens=1 " %%I IN ('net.exe view /domain')  DO net.exe view /domain:%%I  | find "\\">>comps.txt &
FOR /F "tokens=1 " %%I IN (comps.txt)  DO  >>local.txt echo.%%I & net view /network %%I | findstr "Диск Disk" >>local.txt
</SCRIPT>
)#
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: CMD и BAT сценарии в задаче

Postby AlikasS » Fri, 24 Jun 2011, 16:23

Code: Select all
#( test-получениешар
\ более окончательный вариант
\ два промежуточных файла (удаляются в конце)
\ и результирующий файл sharesinlocal.txt
\ чистить пробелы в строке с конца
 : skip-bl-from-end   \ ( a u -- )
  BEGIN 2DUP + 1- C@ 32 = WHILE
   1-
  REPEAT
 ;
NoLog
NoActive
USER-VALUE string-source
USER-VALUE string-compname
Action:
258 ALLOCATE THROW TO string-compname
258 ALLOCATE THROW TO string-source
S" comps.txt" FDELETE
S" local.txt" FDELETE
S" sharesinlocal.txt" FDELETE

SWHide
 <CMDscript>
chcp 1251 &
FOR /F "eol=T skip=3 tokens=1 " %%I IN ('net.exe view /domain')  DO net.exe view /domain:%%I  | find "\\">>comps.txt &
FOR /F "tokens=1 " %%I IN (comps.txt)  DO  >>local.txt echo.%%I & net view /network %%I | findstr "Диск Disk" >>local.txt
 </SCRIPT>

\ анализ вывода
S" local.txt" FILE BEGIN SREAD-LINE WHILE
string-source PLACE
string-source COUNT S" *\\*" WC-COMPARE
IF
QUOTE string-source COUNT skip-bl-from-end  S+ S" \" S+ string-compname PLACE
ELSE
THEN

string-source COUNT S" *Disk*" WC-COMPARE
IF
string-source COUNT 2DUP S" Disk" StringGetPos ?DUP IF 1- SWAP DROP THEN string-source PLACE
string-source COUNT skip-bl-from-end string-source PLACE

string-compname COUNT string-source COUNT S+ QUOTE S+ CRLF S+ OEM2WIN S" sharesinlocal.txt" FAPPEND
ELSE
THEN
REPEAT
2DROP 2DROP

S" comps.txt" FDELETE
S" local.txt" FDELETE
string-source FREE DROP
string-compname FREE DROP
)#
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: CMD и BAT сценарии в задаче

Postby dimmer123 » Thu, 14 Jun 2012, 09:55

Подключил плагин из первого поста. Cron стал ругаться при запуске
09:49:16 3652 CLASSIC-TASK-#-1: WARNING: line:77 pos:2. Invalid time specification. Possible range is [0-59].
09:49:17 3652 CLASSIC-TASK-#-1: WARNING: line:77 pos:16. Invalid time specification. Possible range is [0-23].
09:49:18 3652 CLASSIC-TASK-#-1: WARNING: line:77 pos:24. Invalid time specification. Possible range is [0-7].
09:49:19 3652 CLASSIC-TASK-#-2: WARNING: line:78 pos:2. Invalid time specification. Possible range is [0-59].
09:49:20 3652 CLASSIC-TASK-#-2: WARNING: line:78 pos:17. Invalid time specification. Possible range is [0-23].
09:49:20 3652 CLASSIC-TASK-#-2: WARNING: line:78 pos:21. Invalid time specification. Possible range is [1-31].
09:49:21 3652 CLASSIC-TASK-#-2: WARNING: line:78 pos:25. Invalid time specification. Possible range is [1-12].
09:49:21 3652 CLASSIC-TASK-#-2: WARNING: line:78 pos:30. Invalid time specification. Possible range is [0-7].
09:49:22 3652 CLASSIC-TASK-#-2: WARNING: line:78 pos:32. Invalid time specification. Possible range is [2011-2021].
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 4 guests