Batch code probleem...

Status
Niet open voor verdere reacties.

ThE OwNeR

Gebruiker
Lid geworden
7 apr 2008
Berichten
17
Hallo beste mensen, ben net nieuw hier en ik heb een klein probleemje: :)

Ik zit nu op stage en mijn medestagaire werd gevraagt een batch code te schrijven waarmee bestanden in een rar file worden gezet van de vorige maand zodra een nieuwe maand begint.

Nu heeft hij hem bijna af gekregen maar hij stuitte op een probleem:

Bij de maand augustus en september (dus dan neemt hij de vorige maand; juli en augustus) wordt inplaats van het juiste nummer van de maand (juli: 07 en augustus 0, wordt het -1.

Dit is de code die hij gebruikt heeft:
Code:
@echo off 
@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( 
Set Month=%%A 
Set Day=%%B 
Set Year=%%C 
) 

cd c:\"Program Files"\Winrar 

set /a prevmonth=month-1 

rar a -tb%year%-%month%-01 C:\%year%_%prevmonth%.rar "C:\auto archive\*.xml" 


del "C:\auto archive\*.xml" 

pause

Verder als januari begint dan maakt hij van december, vorig jaar juist weer 0 in plaats van 12 2007.

Heeft iemand hier een beetje verstand van want ik kom er echt niet uit :confused:
 
Laatst bewerkt:
Hopelijk heb je hier wat aan. Heb een beetje zitten stoeien met de datumwaardes.
Code:
@echo off 
@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( 
Set Day=%%A 
Set Month=%%B 
Set Year=%%C 
) 

rem cd c:\"Program Files"\Winrar 
rem /set /a prevmonth=month-1 
rem rar a -tb

echo Om je te tonen hoe het jaar aan te passen ...
echo.
echo Bestand :
echo %year%-%month%-01 C:\%year%_%prevmonth%.rar "C:\auto archive\*.xml" 
echo maand = %month%
echo dag = %day%
echo jaar = %year%
echo.

echo Omdat het nu april is, zetten we jaar naar 2007
echo %month% = april

rem Uiteraard zet je maand op 12 voor de maand.
rem *******************************************
rem En omdat we naar vorig jaar gaan, passen we
rem het laatste teken van het jaar aan
rem de () zijn om meerdere statements te kunnen
rem geven
rem Routine werkt alleen tem 2009. In 2010 moet
rem je ook kijken op de 1.
rem zelfde doe je voor 12 tem 1
rem als 02, alleen maand veranderen in 01
rem als 03, alleen maand veranderen in 02 ...
IF %month%==04 (
	set prevmonth=12
	if %year:~3,1%==0 set year=%year:~0,3%9
	if %year:~3,1%==9 set year=%year:~0,3%8
	if %year:~3,1%==8 set year=%year:~0,3%7
	if %year:~3,1%==7 set year=%year:~0,3%6
	if %year:~3,1%==6 set year=%year:~0,3%5
	if %year:~3,1%==5 set year=%year:~0,3%4
	if %year:~3,1%==4 set year=%year:~0,3%3
	if %year:~3,1%==3 set year=%year:~0,3%2
	if %year:~3,1%==2 set year=%year:~0,3%1
	if %year:~3,1%==1 set year=%year:~1,3%0
)

echo maand is veranderd naar = %prevmonth%
echo vorig jaar = %year%
echo.
echo %year%-%month% C:\%year%_%prevmonth%.rar "C:\auto archive\*.xml"
echo.

pause
Charlize
 
Laatst bewerkt:
Heb ff 2 .xml bestanden gemaakt en in de juiste map gezet en toen jou code in de batch file gedaan. Dit kreeg ik bij MS Promt:

mspromtyv0.jpg


Hij maakte geen .rar bestand aan op C: :(
 
Heb ff 2 .xml bestanden gemaakt en in de juiste map gezet en toen jou code in de batch file gedaan. Dit kreeg ik bij MS Promt:

mspromtyv0.jpg


Hij maakte geen .rar bestand aan op C: :(
Tuurlijk werkt dat niet. Het was een voorbeeld hoe je de maand naar de vorige maand kan zetten. Verwijder de laatste echo commando's om de commando's uit te voeren. Probeer dat eerst even uit op een backup.
Code:
@echo off 
@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( 
Set Day=%%A 
Set Month=%%B 
Set Year=%%C 
) 

rem cd c:\"Program Files"\Winrar 
rem /set /a prevmonth=month-1 
rem rar a -tb

echo Om je te tonen hoe het jaar aan te passen ...
echo.
echo Bestand :
echo %year%-%month%-01 C:\%year%_%prevmonth%.rar "C:\auto archive\*.xml" 
echo maand = %month%
echo dag = %day%
echo jaar = %year%
echo.

echo Omdat het nu april is, zetten we maand naar 03
echo Wanneer het de eerste maand zou zijn, wordt
echo het jaar ook teruggezet
echo %month% = april

rem Uiteraard zet je maand op 12 voor de maand.
rem *******************************************
rem En omdat we naar vorig jaar gaan, passen we
rem het laatste teken van het jaar aan
rem de () zijn om meerdere statements te kunnen
rem geven
rem Routine werkt alleen tem 2009. In 2010 moet
rem je ook kijken op de 10 en 1 op 0 zetten
rem zelfde doe je voor 12 tem 1 voor de maanden
rem als 02, alleen maand veranderen in 01
rem als 03, alleen maand veranderen in 02 ...
IF %month%==01 (
	set prevmonth=12
	if %year:~3,1%==0 set year=%year:~0,3%9
	if %year:~3,1%==9 set year=%year:~0,3%8
	if %year:~3,1%==8 set year=%year:~0,3%7
	if %year:~3,1%==7 set year=%year:~0,3%6
	if %year:~3,1%==6 set year=%year:~0,3%5
	if %year:~3,1%==5 set year=%year:~0,3%4
	if %year:~3,1%==4 set year=%year:~0,3%3
	if %year:~3,1%==3 set year=%year:~0,3%2
	if %year:~3,1%==2 set year=%year:~0,3%1
	if %year:~3,1%==1 set year=%year:~1,3%0
)
if %month%==02 set prevmonth=01
if %month%==03 set prevmonth=02
if %month%==04 set prevmonth=03
if %month%==05 set prevmonth=04
if %month%==06 set prevmonth=05
if %month%==07 set prevmonth=06
if %month%==08 set prevmonth=07
if %month%==09 set prevmonth=08
if %month%==10 set prevmonth=09
if %month%==11 set prevmonth=10
if %month%==12 set prevmonth=11

echo maand is veranderd naar = %prevmonth%
echo vorig jaar = %year%. Wanneer maand 01 is, wordt dit aangepast
echo.
echo %year:~0,4%-%month:~0,2% C:\%year:~0,4%_%prevmonth:~0,2%.rar "C:\auto archive\*.xml"
echo.
echo Natuurlijk wordt er geen archief gemaakt.
echo Dit is de file zonder commando. Heb geen rar.
echo Commando's die je waarschijnlijk wenst (niet getest)
echo ***************************************************
echo cd c:\"Program Files"\Winrar 
echo rar a -tb %year:~0,4%-%prevmonth:~0,2% C:\%year:~0,4%_%prevmonth:~0,2%.rar "C:\auto archive\*.xml"
echo *************************************
pause
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan