Batch zile lucratoare
Batch zile lucratoare
Buna ziua,
am cautat dar nu am reusit sa fac sa mearga un batch care sa ruleze un program doar in zilele lucratoare sau "specificate" sau "mai putin in zilele de ..." . Va rog sa ma ajutati.
Multumesc anticipat, stima
am cautat dar nu am reusit sa fac sa mearga un batch care sa ruleze un program doar in zilele lucratoare sau "specificate" sau "mai putin in zilele de ..." . Va rog sa ma ajutati.
Multumesc anticipat, stima
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
-
- Moderator
- Mesaje: 4570
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Batch zile lucratoare
Chiar daca raspunsul vine mai tarziu... poate mai este (inca) de folos.
Din pacate pentru a detecta ziua din saptamana nu se poate folosi doar o comanda MS DOS, dar se poate, asa cum am vazut defapt si in scripturile tale, apela un script VBS care poate "pune" informatia intr-un fisier text ce poate apoi fi "citit" din MS DOS.
Astfel poti pune intr-o variabila din acel script numele zilei pe care apoi il poti compara asa cum am vazut ca stii sa faci cu IF.
Concret, se poate se poate folosi urmatorul script VBS pentru detectarea numelui zilei (am si atasat fisierul GETDoW.vbs)
Fisierul de mai sus ruleaza numai daca este apelat cu un parametru reprezentand numele fisierului de tip TEXT pe care il va crea.
Apoi in interiorul fisierului BAT se poate "citi" numele zilei scris in fisierul text si apoi in functie de numele zile se poate "sari" in asa fel incat sa se execute ce trebuie:
In exemplul de mai sus nu se executa decat o singura intructiune de afisare a initialei zilei.
Sper sa fie de folos.
Din pacate pentru a detecta ziua din saptamana nu se poate folosi doar o comanda MS DOS, dar se poate, asa cum am vazut defapt si in scripturile tale, apela un script VBS care poate "pune" informatia intr-un fisier text ce poate apoi fi "citit" din MS DOS.
Astfel poti pune intr-o variabila din acel script numele zilei pe care apoi il poti compara asa cum am vazut ca stii sa faci cu IF.
Concret, se poate se poate folosi urmatorul script VBS pentru detectarea numelui zilei (am si atasat fisierul GETDoW.vbs)
Cod: Selectaţi tot
'How Can I Determine the Day of the Week?
'http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug04/hey0827.mspx
Dim objArgs
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then
MsgBox "This script needs a parameter!", vbExclamation, AppTitle
WScript.Quit
End If
filename = objArgs(0)
dtmToday = Date()
dtmDayOfWeek = DatePart("w", dtmToday)
Select Case dtmDayOfWeek
Case 1 lcDayName = "Duminica"
Case 2 lcDayName = "Luni"
Case 3 lcDayName = "Marti"
Case 4 lcDayName = "Miercuri"
Case 5 lcDayName = "Joi"
Case 6 lcDayName = "Vineri"
Case 7 lcDayName = "Sambata"
End Select
'wscript.echo "Astazi este: " + lcDayName
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = oFSO.CreateTextFile(filename)
oFile.WriteLine "Astazi este:" + lcDayName +";"
oFile.close
Apoi in interiorul fisierului BAT se poate "citi" numele zilei scris in fisierul text si apoi in functie de numele zile se poate "sari" in asa fel incat sa se execute ce trebuie:
Cod: Selectaţi tot
@echo off
rem *** Setari parametrii fisier BAT
set BATFullPath=%~dp0
set BATTempFile=%BATFullPath%%~n0.tmp
set BATLogFile=%BATFullPath%%~n0.log
set BATLogTag=%DayName%_%AMBLVer%
rem *** Detecteaza numele zilei
call %BATFullPath%GETDoW.vbs %BATTempFile%
for /F "eol=; tokens=1,2 delims=:;" %%c in (%BATTempFile%) do (
rem Echo Astazi este: %%d
if [%%c]==[Astazi este] (
set DayName=%%d
)
)
goto %DayName%
:Duminica
echo D
goto Final
:Luni
echo L
goto Final
:Marti
echo Ma
goto Final
:Miercuri
echo Mi
goto Final
:Joi
echo J
goto Final
:Vineri
echo V
goto Final
:Sambata
echo S
goto Final
:Final
rem *** Curatenie la locul de munca
if exist %BATTempFile% (
del %BATTempFile% > nul
)
Sper sa fie de folos.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.