Crearea unui fișier bat care ar rula un alt fișier după o anumită perioadă de timp

Și poate mânca toți parametrii standard ai începutului procesului prin intermediul unui anumit termen prin intermediul Windows?

Nicodim
Scriptul de referință Merlin Cori este doar proiectat pentru a fi inclus în autorun, mai jos este un exemplu de rulare a aplicației cu o întârziere specificată.







În general, există, de asemenea, un minunat program organizator de pornire, care poate controla progresul de pornire, expune întârzieri și multe altele.

Trebuie doar să încep programul nu pe toate odată, dar după un anumit timp când boot-ul sistemului
Există destul de multe programe similare, de exemplu, Absolute StartUp.

cscript Delay.vbs /E:C:\Windows\Notepad.exe / D: 10

wscript Delay.vbs /E:C:\Windows\Notepad.exe / D: 10

La un moment dat pentru mine, am scris un script care așteaptă exact momentul potrivit, numindu-l aceeași întârziere. Vbs:

Opțiune explicită
Const cdefpause = 10
Pauză de dimineață, argvobj
Setați argvobj = WScript.Arguments
dacă argvobj.Count <1 then
pauză = cdefpause
altfel
pauză = CLng (argvobj (0))
sfârșit dacă

Wscript.Echo WScript.ScriptName ": Întârzierea executării pe" pauză „Secunde“
MyPause (pauză)

sub MyPause (întârziere)
dim st
st = acum
do-it-sayiff ("s", st, acum) buclă
end sub
(Nu știam despre WScript.Sleep apoi =))
Din fișierul de lot numesc acest lucru:

cscript / nologo delay.vbs 300

Gyhm. Și ce zici de folosirea unui programator standard? Și comanda AT pentru ao controla din consola? Comanda AT este proiectată să ruleze comenzi și programe la ora specificată
în anumite zile. Pentru a utiliza comanda AT, trebuie să aveți
serviciul de programare este pornit.

AT [\\ computername] [[cod] [/ DELETE] | / DELETE [/ YES]]
AT timp [\\ computername] [/ INTERACTIV]
[/ EVERY: day [. ] | / NEXT: zi [. ]] "comanda"

\\ computername Numele computerului la distanță. Dacă acest parametru este omis,
Se utilizează un computer local.
code Numărul ordinal al sarcinii programate.
/ delete Se anulează sarcina programată. Dacă codul de sarcină este omis,
toate sarcinile programate pentru specificat
calculator.
/ da Anulare cererea de confirmare la anularea tuturor
sarcinile planificate.
timpul în care a fost executat comanda.
/ interactive Permite interacțiunea sarcinii cu utilizatorul,
care rulează pe computer în momentul lansării sarcinii.
/ fiecare: zi [. ] Sarcina este lansată în zilele specificate ale săptămânii sau
luni. Dacă data este omisă, se folosește ziua curentă
luni.
/ următoare: zi. ] Sarcina va fi lansată în ziua următoare a săptămânii
(de exemplu, joia viitoare). Dacă data este omisă,
se folosește ziua curentă a lunii.
"comanda" Comanda Windows NT sau numele fișierului lot. Rămâne doar pentru a determina timpul, adică. adăugați la ora curentă un anumit număr de secunde: @echo off
setați dSEC = 40
setați HOU = 0
setați MIN = 0
setați SEC = 0

pentru / f "delims =. jetoane = 1,2,3, *" %% i în ("% TIME%")
setați HOU = %% i
setați MIN = %% j
setați SEC = %% k
)

pentru / l %% i in (0,1,9) do dacă% SEC% == %% i set SEC = 0% SEC%
pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

set / un SEC = SEC + dSEC
dacă / i "% SEC%" geq "60" (
set / a SEC = SEC-60
set / un MIN = MIN + 1
)

dacă / i "% MIN%" geq "60" (
setați / MIN = MIN-60
set / un HOU = HOU + 1
)

dacă / i "% HOU%" geq "24" (
set / un HOU = HOU-24
)

pentru / l %% i in (0,1,9) do dacă% SEC% == %% i set SEC = 0% SEC%
pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

echo% TIME% -% nTIME%;)

fantomă:
Rămâne doar să se determine timpul, adică adăugați la ora curentă un anumit număr de secunde:
poți scrie ce ar arăta fișierul lot ca să ruleze notepad-ul după 30 de secunde?

De fapt, acest lucru: @echo off
setați dSEC = 30
setați HOU = 0
setați MIN = 0
setați SEC = 0

pentru / f "delims =. jetoane = 1,2,3, *" %% i în ("% TIME%")
setați HOU = %% i






setați MIN = %% j
setați SEC = %% k
)

pentru / l %% i in (0,1,9) do dacă% SEC% == %% i set SEC = 0% SEC%
pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

set / un SEC = SEC + dSEC
dacă / i "% SEC%" geq "60" (
set / a SEC = SEC-60
set / un MIN = MIN + 1
)

dacă / i "% MIN%" geq "60" (
setați / MIN = MIN-60
set / un HOU = HOU + 1
)

dacă / i "% HOU%" geq "24" (
set / un HOU = HOU-24
)

pentru / l %% i in (0,1,9) do dacă% SEC% == %% i set SEC = 0% SEC%
pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

la% nTIME% / interactive% windir% \ notepad.exe Numai pentru moment, acest ciudat (proiectantul este menit) din anumite motive nu a prins al doilea, adică intervalul minim este un minut. (Căut o soluție.

fantomă
lucru, asta e doar acolo pentru a rula, deoarece fiecare proces de un singur fișier este atribuit de identitate propriu, dar există o altă întrebare, cum într-un singur fișier batch pentru a înregistra fișierul este rulat grupa, la diferite intervale de timp și, de preferință, în secunde

În câteva secunde, nu funcționează încă - planificatorul nu dorește să lucreze cu ei. (Doar la un interval de un minut.) Asemenea: @echo off
dacă "% 1" == "" ieșiți
începe% 1
dacă "% 2" == "" ieșiți

setați HOU = 0
setați MIN = 0

pentru / f "delims =. jetoane = 1,2, *" %% i in ("% TIME%")
setați HOU = %% i
setați MIN = %% j
)

pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

dacă / i "% MIN%" geq "60" (
setați / MIN = MIN-60
set / un HOU = HOU + 1
)

dacă / i "% HOU%" geq "24" (
set / un HOU = HOU-24
)

pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

setați nTIME =% HOU%:% MIN%: 00
la% nTIME% / interactive D: \ myStart.cmd% 2% 3% 4% 5% 6% 7% 8% 9Creați, de exemplu: myStart.cmd% windir% \ system32 \ freecell.exe% windir% \ system32 \ sol.exe

fantomă
ceva nu funcționează cu multitasking:
de exemplu am nevoie pentru a rula ACDSee într-un minut, și după 2 winamp
atunci cum scriu corect?
Iată cum am scris:
@echo off
dacă "% 1" == "" ieșiți
începe% 1
dacă "% 2" == "" ieșiți

setați HOU = 0
setați MIN = 0

pentru / f "delims =. jetoane = 1,2, *" %% i in ("% TIME%")
setați HOU = %% i
setați MIN = %% j
)

pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

dacă / i "% MIN%" geq "60" (
setați / MIN = MIN-60
set / un HOU = HOU + 1
)

dacă / i "% HOU%" geq "24" (
set / un HOU = HOU-24
)

pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

setați nTIME =% HOU%:% MIN%: 00
la% nTIME% / interactiv "C: \ Program Files \ ACD Systems \ ACDSee \ 7.0 \ ACDSee7.exe" "C: \ Program Files \ Winamp \ Winamp.exe"

Dar nu se încarcă normal, adică sarcinile nu încep :(

Nicodim
Creați un fișier myStart.cmd (în dosarul D: \, de exemplu): @ echo off
dacă '% 1' == '' ieșire
porniți "myStart"% 1
dacă '% 2' == '' ieșire

setați HOU = 0
setați MIN = 0

pentru / f "delims =. jetoane = 1,2, *" %% i in ("% TIME%")
setați HOU = %% i
setați MIN = %% j
)

pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

dacă / i "% MIN%" geq "60" (
setați / MIN = MIN-60
set / un HOU = HOU + 1
)

dacă / i "% HOU%" geq "24" (
set / un HOU = HOU-24
)

pentru / l %% i in (0,1,9) do dacă% MIN% == %% i set MIN = 0% MIN%

setați nTIME =% HOU%:% MIN%: 00
la% nTIME% D / interactivă: \ myStart.cmd% 2% 3% 4% 5% 6% 7% 8% 9Și ai pus în Startup: D: \ myStart.cmd „C: \ Program Files \ ACD Systems \ ACDSee \ 7.0 \ ACDSee7.exe "" C: \ Program Files \ Winamp \ winamp.exe "

fantomă:
Iată lucru, rulează numai Mystart.cmd și totul, și rulați-l în 10 secunde în loc de 1 minut, iar fișierul lotului anterior, de asemenea, lansat în 10 secunde în loc de un minut, în cazul în care este îngropat câinele?

Nicodim
HZ. Verificată la sine - toate lucrările: după lansarea fișierului lot, este lansat primul program; așteaptă până la începutul următorului minut (poate mai puțin de 60 de secunde) și se lansează al doilea program; alte programe rămase sunt începute cu un interval de 1 minut. Și myStart.cmd ar trebui, de asemenea, să fie pornit - și din ea în a treia linie programul este lansat. (

verificat de mai multe ori pe 2 computere, nu arata, doar mystart.cmd este pornit si totul :(

Gyhm. E ciudat. Poate fi mai bine să faceți acest lucru? Noi scriem pe TurboPascal'e astfel de prog: utilizări
dos;

var
h, m, s1, s2, s0: cuvânt;
NeedSec, WaitSec, Err: întreg;

începe
dacă ParamCount = 0 atunci ieșiți;
val (ParamStr (1), NeedSec, err);
WaitSec: = 0;
în timp ce WaitSec <> NeedSec începe
interval de timp (h, m, s1, s0);
repetați intervalul de timp (h, m, s2, s0) până la s2 <> s1;
inc (WaitSec);
se încheie;
Îl compilam și primim fișierul wait.exe (vezi atașamentul). Am arunca în dosarul System32, și apoi apel în fișierul batch cu „numărul de secunde de așteptare“, de exemplu: așteptați 10i face: a crea fișier myStart.dat, de exemplu: 10 | C: \ WINDOWS \ notepad.exe
10 | C: \ WINDOWS \ system32 \ sol.exeA în fișierul Startup cramă fișierul myStart.cmd: @echo off
pentru / f "jetoane = 1, * delims = |" %% i în (myStart.dat) nu (
așteptați %% i
începe "" "%% j"
) Sau nu fișierul în sine și comanda sa executați în modul fundal: @start "myStart" / b myStart.cmd

Voi repeta un pic.
Pentru VBScript nu aveți nevoie de compilatoare, IMHO găsi rar o mașină unde nu ar fi. Prin urmare, puteți utiliza fișierul delay.vbs pentru a aștepta:

Opțiune explicită
Const cdefpause = 10
Dimineți pauza
Dim argvobj
Setați argvobj = WScript.Arguments
dacă argvobj.Count <1 then
pauză = cdefpause
altfel
pauză = CLng (argvobj (0))
sfârșit dacă
Wscript.Echo WScript.ScriptName ": Întârzierea executării pe" pauză „Secunde“
MyPause (pauză)

sub MyPause (întârziere)
WScript.Sleep delay * 1000
end sub
Să punem acest fișier, să zicem, în "C:"
Și în fișierul lot scrie:

cscript / nologo C: \ delay.vbs 10
"C: \ Program Files \ ACD Systems \ ACDSee \ 7.0 \ ACDSee7.exe"
cscript / nologo C: \ delay.vbs 20
"C: \ Program Files \ Winamp \ winamp.exe"

Puteți, de asemenea, combinați cu îndrăzneală cu batmanul, sugerat de Ghost







Trimiteți-le prietenilor: