Avatar billede stry Nybegynder
28. august 2003 - 21:02 Der er 9 kommentarer og
1 løsning

Batch-fil som kun kører på bestemt ugedag

Jeg har en batch-fil som bliver kaldt ved shutdown.
Kan jeg i batch-filen kode mig frem til at den kun kører opgaverne hvis en betingelse er opfyldt. Altså at den kun kører hvis det er mandag?
OS = winXP pro
Avatar billede tonnybrandt Nybegynder
28. august 2003 - 22:12 #1
Tror du skal bruge sådan et par linier i batchfilen:

for /f "tokens=1-2 delims= " %%a in ('date /t') do (set weekday=%%a& set
date=%%b)
if "%weekday%"=="Mon" goto do_it
goto end

:do_it
kommandoer

:end
exit
Avatar billede tonnybrandt Nybegynder
28. august 2003 - 22:13 #2
ovenstående er pillet ud af
http://lists.indymedia.org/pipermail/imc-seattle-radio/2003-March/000650.html
og redigeret lidt så de passer til det du skal bruge det til.
Avatar billede stry Nybegynder
28. august 2003 - 23:02 #3
>> tonnybrandt
weekday bliver til 28-08-2003
Avatar billede tonnybrandt Nybegynder
28. august 2003 - 23:07 #4
Tester det lige...
Avatar billede tonnybrandt Nybegynder
29. august 2003 - 00:01 #5
Puha...du har ret. Jeg arbejdede lidt videre med det og fandt yderligere info på nettet, så her er et bud:

: Du kan teste på %dow% om den er 1 (mandag), 2 (tirsdag) osv
@echo off
call :GetDate year month day
echo/Today is: %year%-%month%-%day%
call :DateToDOW %year% %month% %day% dow
echo/%dow%

goto commands

:GetDate yy mm dd
setlocal ENABLEEXTENSIONS
set t=2&if "%date%z" LSS "A" set t=1
for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date') do (
  for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do (
    set %%a=%%d&set %%b=%%e&set %%c=%%f))
endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

:DateToDOW %yy% %mm% %dd% days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1
endlocal&set %4=%dow%&goto :EOF

:commands
if %dow%==4 goto torsdag
if %dow%==5 goto fredag

:torsdag
echo det er torsdag
goto end

:fredag
echo det er fredag
goto end

:end
pause
Avatar billede tonnybrandt Nybegynder
29. august 2003 - 00:03 #6
Ovenstående er klippet, klistret, redigeret og testet fra:
http://www.commandline.co.uk/cmdfuncs/dandt/#getdate
Avatar billede stry Nybegynder
29. august 2003 - 00:10 #7
>>Tonny
Den blev løst med dette VBScript:

Option Explicit
dim shell
if weekday(now)=4 then
  set shell=Wscript.CreateObject("Wscript.shell")
  Shell.run "defrag.bat"
end if

Men jeg synes du skal belønnes for din indsats så du for pointene :-)
Avatar billede stry Nybegynder
29. august 2003 - 00:11 #8
for = får
Avatar billede tonnybrandt Nybegynder
29. august 2003 - 00:26 #9
Takker og må indrømme at jeg ikke lige havde tænkt på vbscript. Nice lille script du har lavet der. Noget nemmere at læse end det jeg fik kastet sammen.
Avatar billede stry Nybegynder
29. august 2003 - 00:52 #10
Ret skal være ret, det var nmh her på eksperten der lavede scriptet (jeg spillede vist lidt på to heste, men sig det ikke til nogen ;-D)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester