mijn batch files werken om de één of andere reden niet

Status
Niet open voor verdere reacties.

batch

Gebruiker
Lid geworden
29 apr 2009
Berichten
306
Hallo iedereen,

Ik heb voor de grap een paar batch files gemaakt die een school rapport generen maar om één of andere reden werken de variabelen niet helemaal

hier de inhoud van mijn hoofd batch-file:

Code:
@echo off
cd data
color 0F
title Cijfer Programma
mode con:cols=100 lines=40
call namen.bat
:begin
set leerling=geen
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
echo  1: %leerling1%
echo  2: %leerling2%
echo  3: %leerling3%
echo  4: %leerling4%
echo  5: %leerling5%
echo  6: %leerling6%
echo  7: %leerling7%
echo  8: %leerling8%
echo  9: %leerling9%
echo 10: %leerling10%
echo 11: %leerling11%
echo 12: %leerling12%
echo.
set nummer=
set /p nummer=Nummer van leerling: 
if "%nummer%"=="1" set leerling=%leerling1% & goto leerling1
if "%nummer%"=="2" set leerling=%leerling2% & goto leerling2
if "%nummer%"=="3" set leerling=%leerling3% & goto leerling3
if "%nummer%"=="4" set leerling=%leerling4% & goto leerling4
if "%nummer%"=="5" set leerling=%leerling5% & goto leerling5
if "%nummer%"=="6" set leerling=%leerling6% & goto leerling6
if "%nummer%"=="7" set leerling=%leerling7% & goto leerling7
if "%nummer%"=="8" set leerling=%leerling8% & goto leerling8
if "%nummer%"=="9" set leerling=%leerling9% & goto leerling9
if "%nummer%"=="10" set leerling=%leerling10% & goto leerling10
if "%nummer%"=="11" set leerling=%leerling11% & goto leerling11
if "%nummer%"=="12" set leerling=%leerling12% & goto leerling12
echo.
echo Het nummer dat u heeft ingevoerd is geen optie.
echo.
echo Druk op een toets om terug te gaan...
pause > nul
goto begin









:leerling1
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
echo 1: Cijfers wijzigen
echo 2: Naam Wijzigen
echo.
echo 3: Terug naar hoofdmenu
echo.
set nummer=
set /p nummer=Nummer: 
if "%nummer%"=="1" goto leerling1wijzig
if "%nummer%"=="2" goto leerling1zeker
if "%nummer%"=="3" goto begin
echo.
echo Het nummer dat u heeft ingevoerd is geen optie.
echo.
echo Druk op een toets om terug te gaan...
pause > nul
goto leerling1

:leerling1zeker
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
set zeker=
set /p zeker=Weet u zeker dat u de naam van %leerling1% (leerling 1) wilt wijzigen? (j/n): 
if "%zeker%"=="j" goto leerling1naam
if "%zeker%"=="n" goto leerling1
echo.
echo Het nummer dat u heeft ingevoerd is geen optie.
echo.
echo Druk op een toets om terug te gaan...
pause > nul
goto leerling1

:leerling1naam
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
set /p leerling1=Nieuwe naam van %leerling1% (Leerling 1): 
echo set leerling1= >> namen.bat
echo set leerling1=%leerling1% >> namen.bat
echo.
echo Naam gewijzigd.
echo.
echo Druk op een toets om terug te gaan naar het hoofdmenu...
pause > nul
goto begin

:leerling1wijzig
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
echo Cijfers Nederlands:
echo.
set /p 1ned1=Rapport 1: 
set /p 1ned2=Rapport 2: 
set /p 1ned3=Rapport 3: 
set /p 1ned4=Rapport 4: 
set /p 1ned5=Gemiddelde: 
echo.
echo.
echo Duits:
echo.
set /p 1dui1=Rapport 1: 
set /p 1dui2=Rapport 2: 
set /p 1dui3=Rapport 3: 
set /p 1dui4=Rapport 4: 
set /p 1dui5=Gemiddelde: 
echo.
echo.
echo Engels:
echo.
set /p 1eng1=Rapport 1: 
set /p 1eng2=Rapport 2: 
set /p 1eng3=Rapport 3: 
set /p 1eng4=Rapport 4: 
set /p 1eng5=Gemiddelde: 
echo.
echo.
echo Wiskunde:
echo.
set /p 1wis1=Rapport 1: 
set /p 1wis2=Rapport 2: 
set /p 1wis3=Rapport 3: 
set /p 1wis4=Rapport 4: 
set /p 1wis5=Gemiddelde: 
echo.
echo.
echo Natuur- scheikunde:
echo.
set /p 1nas1=Rapport 1: 
set /p 1nas2=Rapport 2: 
set /p 1nas3=Rapport 3: 
set /p 1nas4=Rapport 4: 
set /p 1nas5=Gemiddelde: 
echo.
echo.
echo Economie:
echo.
set /p 1eco1=Rapport 1: 
set /p 1eco2=Rapport 2: 
set /p 1eco3=Rapport 3: 
set /p 1eco4=Rapport 4: 
set /p 1eco5=Gemiddelde: 
echo.
echo.
echo Gym:
echo.
set /p 1gym1=Rapport 1: 
set /p 1gym2=Rapport 2: 
set /p 1gym3=Rapport 3: 
set /p 1gym4=Rapport 4: 
set /p 1gym5=Gemiddelde: 
echo.
echo.
set invoeren=
set /p invoeren=Alle cijfers invoeren? (j/n): 
if "%invoeren%"=="j" goto leerling1invoeren
if "%invoeren%"=="n" goto leerling1
echo.
echo Het nummer dat u heeft ingevoerd is geen optie.
echo.
echo Druk op een toets om terug te gaan...
pause > nul
goto leerling1

:leerling1invoeren
cd leerling1
maaklijst.bat
cd..
goto begin












:leerling2
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
echo 1: Cijfers wijzigen
echo 2: Naam Wijzigen
echo.
echo 3: Terug naar hoofdmenu
echo.
set nummer=
set /p nummer=Nummer: 
if "%nummer%"=="1" goto leerling2wijzig
if "%nummer%"=="2" goto leerling2zeker
if "%nummer%"=="3" goto begin
echo.
echo Het nummer dat u heeft ingevoerd is geen optie.
echo.
echo Druk op een toets om terug te gaan...
pause > nul
goto leerling2

:leerling2zeker
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
set zeker=
set /p zeker=Weet u zeker dat u de naam van %leerling2% (leerling 2) wilt wijzigen? (j/n): 
if "%zeker%"=="j" goto leerling2naam
if "%zeker%"=="n" goto leerling2
echo.
echo Het nummer dat u heeft ingevoerd is geen optie.
echo.
echo Druk op een toets om terug te gaan...
pause > nul
goto leerling2

:leerling2naam
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
set /p leerling2=Nieuwe naam van %leerling2% (Leerling 2): 
echo set leerling2= >> namen.bat
echo set leerling2=%leerling2% >> namen.bat
echo.
echo Naam gewijzigd.
echo.
echo Druk op een toets om terug te gaan naar het hoofdmenu...
pause > nul
goto begin

:leerling2wijzig
cls
echo ----------------------------------------------------------------------
echo ^| Tijd: %time% ^| Datum: %date% ^| Leerling: %leerling% ^|
echo ----------------------------------------------------------------------
echo.
echo Cijfers Nederlands:
echo.
set /p 2ned1=Rapport 1: 
set /p 2ned2=Rapport 2: 
set /p 2ned3=Rapport 3: 
set /p 2ned4=Rapport 4: 
set /p 2ned5=Gemiddelde: 
echo.
echo.
echo Duits:
echo.
set /p 2dui1=Rapport 1: 
set /p 2dui2=Rapport 2: 
set /p 2dui3=Rapport 3: 
set /p 2dui4=Rapport 4: 
set /p 2dui5=Gemiddelde: 
echo.
echo.
echo Engels:
echo.
set /p 2eng1=Rapport 1: 
set /p 2eng2=Rapport 2: 
set /p 2eng3=Rapport 3: 
set /p 2eng4=Rapport 4: 
set /p 2eng5=Gemiddelde: 
echo.
echo.
echo Wiskunde:
echo.
set /p 2wis1=Rapport 1: 
set /p 2wis2=Rapport 2: 
set /p 2wis3=Rapport 3: 
set /p 2wis4=Rapport 4: 
set /p 2wis5=Gemiddelde: 
echo.
echo.
echo Natuur- scheikunde:
echo.
set /p 2nas1=Rapport 1: 
set /p 2nas2=Rapport 2: 
set /p 2nas3=Rapport 3: 
set /p 2nas4=Rapport 4: 
set /p 2nas5=Gemiddelde: 
echo.
echo.
echo Economie:
echo.
set /p 2eco1=Rapport 1: 
set /p 2eco2=Rapport 2: 
set /p 2eco3=Rapport 3: 
set /p 2eco4=Rapport 4: 
set /p 2eco5=Gemiddelde: 
echo.
echo.
echo Gym:
echo.
set /p 2gym1=Rapport 1: 
set /p 2gym2=Rapport 2: 
set /p 2gym3=Rapport 3: 
set /p 2gym4=Rapport 4: 
set /p 2gym5=Gemiddelde: 
echo.
echo.
set invoeren=
set /p invoeren=Alle cijfers invoeren? (j/n): 
if "%invoeren%"=="j" goto leerling2invoeren
if "%invoeren%"=="n" goto leerling2
echo.
echo Het nummer dat u heeft ingevoerd is geen optie.
echo.
echo Druk op een toets om terug te gaan...
pause > nul
goto leerling2

:leerling2invoeren
cd leerling2
maaklijst.bat
cd..
goto begin


En hier de inhoud van één van de batch files die daadwerkelijk het rapport maakt:

Code:
@echo off
title Rapport %leerling%
if "%2ned1%"=="" set 2ned1=nvt
if "%2ned2%"=="" set 2ned2=nvt
if "%2ned3%"=="" set 2ned3=nvt
if "%2ned4%"=="" set 2ned4=nvt
if "%2ned5%"=="" set 2ned5=nvt

if "%2dui1%"=="" set 2dui1=nvt
if "%2dui2%"=="" set 2dui2=nvt
if "%2dui3%"=="" set 2dui3=nvt
if "%2dui4%"=="" set 2dui4=nvt
if "%2dui5%"=="" set 2dui5=nvt

if "%2eng1%"=="" set 2eng1=nvt
if "%2eng2%"=="" set 2eng2=nvt
if "%2eng3%"=="" set 2eng3=nvt
if "%2eng4%"=="" set 2eng4=nvt
if "%2eng5%"=="" set 2eng5=nvt

if "%2wis1%"=="" set 2wis1=nvt
if "%2wis2%"=="" set 2wis2=nvt
if "%2wis3%"=="" set 2wis3=nvt
if "%2wis4%"=="" set 2wis4=nvt
if "%2wis5%"=="" set 2wis5=nvt

if "%2nas1%"=="" set 2nas1=nvt
if "%2nas2%"=="" set 2nas2=nvt
if "%2nas3%"=="" set 2nas3=nvt
if "%2nas4%"=="" set 2nas4=nvt
if "%2nas5%"=="" set 2nas5=nvt

if "%2eco1%"=="" set 2eco1=nvt
if "%2eco2%"=="" set 2eco2=nvt
if "%2eco3%"=="" set 2eco3=nvt
if "%2eco4%"=="" set 2eco4=nvt
if "%2eco5%"=="" set 2eco5=nvt

if "%2gym1%"=="" set 2gym1=nvt
if "%2gym2%"=="" set 2gym2=nvt
if "%2gym3%"=="" set 2gym3=nvt
if "%2gym4%"=="" set 2gym4=nvt
if "%2gym5%"=="" set 2gym5=nvt

cls
if exist "cijferlijst.txt" del cijferlijst.txt
echo ---------------------------------------------------------------------- >> cijferlijst.txt
echo ^| Cijferlijst van leerling 2: %leerling2% ^| >> cijferlijst.txt
echo ---------------------------------------------------------------------- >> cijferlijst.txt
echo. >> cijferlijst.txt
echo                     R-1    R-2    R-3    R-4    gem. >> cijferlijst.txt
echo. >> cijferlijst.txt
echo Nederlands          %2ned1%    %2ned2%    %2ned3%    %2ned4%    %2ned5% >> cijferlijst.txt
echo Duits               %2dui1%    %2dui2%    %2dui3%    %2dui4%    %2dui5% >> cijferlijst.txt
echo Engels              %2eng1%    %2eng2%    %2eng3%    %2eng4%    %2eng5% >> cijferlijst.txt
echo Wiskunde            %2wis1%    %2wis2%    %2wis3%    %2wis4%    %2wis5% >> cijferlijst.txt
echo Natuur- scheikunde  %2nas1%    %2nas2%    %2nas3%    %2nas4%    %2nas5% >> cijferlijst.txt
echo Economie            %2eco1%    %2eco2%    %2eco3%    %2eco4%    %2eco5% >> cijferlijst.txt
echo Gym                 %2gym1%    %2gym2%    %2gym3%    %2gym4%    %2gym5% >> cijferlijst.txt


echo ----------------------------------------------------------------------
echo ^| Cijferlijst van leerling 2: %leerling2% ^|
echo ----------------------------------------------------------------------
echo.
echo                     R-1    R-2    R-3    R-4    gem.
echo.
echo Nederlands          %2ned1%    %2ned2%    %2ned3%    %2ned4%    %2ned5%
echo Duits               %2dui1%    %2dui2%    %2dui3%    %2dui4%    %2dui5%
echo Engels              %2eng1%    %2eng2%    %2eng3%    %2eng4%    %2eng5%
echo Wiskunde            %2wis1%    %2wis2%    %2wis3%    %2wis4%    %2wis5%
echo Natuur- scheikunde  %2nas1%    %2nas2%    %2nas3%    %2nas4%    %2nas5%
echo Economie            %2eco1%    %2eco2%    %2eco3%    %2eco4%    %2eco5%
echo Gym                 %2gym1%    %2gym2%    %2gym3%    %2gym4%    %2gym5%
echo.
echo.
pause > nul


Het probleem is dat dit de output is: (heb even wat anders ingevoegd bij leerling)

raportgenerator.jpg


En dat klopt natuurlijk niet...
Weet iemand waarom?
 
Laatst bewerkt:
Ik ben er inmiddels achter dat de fout in maaklijst.bat zit (één van de rapport generators)
omdat hij dezelfde output geeft als ik het bestand los uitvoer. Wat eigenlijk niet zou moeten omdat er variabelen in gebruikt worden die niet gedefinieerd zijn.

Ook als ik @echo off weg laat bij de batch staat er bij de CMD prompt heel droog:
C:\Documents and Settings\Tom>echo Nederlands ned11ned21ned31ned41ned5

De eerste 1 en de spaties worden weggelaten, waarom? Dit is de code van die regel:
echo Nederlands %1ned1% %1ned2% %1ned3% %1ned4% %1ned5%
En dat bij alle vakken, ook geen melding?

Ik zie de fout. Jullie wel?
 
Laatst bewerkt:
Ik heb nog steeds het probleem niet gevonden...... :(
 
Een Set opdracht is alleen gedurende de sessie van het CMD/BAT bestand beschikbaar in die sessie. Dus niet in een andere cmd sessie

Daarnaast is %<getal> een gereserveerde variabele waarmee je argumenten mee kan geven aan een cmd
voorbeeld

"test.bat a b c"

Zou je bovenstaand commando uit voeren kun je in het bestand test.bat de volgende variabelen gebruiken

%1 = a
%2 = b
%3 = c

Dus jou variabele %2ned1% is eigenlijk <argument2>ned1% en aangezien je argument 2 niet gevuld heb is die dus leeg
 
Laatst bewerkt:
Hoi Ellasar,

Sorry voor mijn late reactie.

Dus ik moet gewoon de naam van de variabele veranderen?

Het heeft trouwens wel gewerkt op deze manier met dezelfde namen voor variabelen, maar ik weet niet meer hoe.
 
Dus ik moet gewoon de naam van de variabele veranderen?
Yup dat in ieder geval. daarna kunnen we verder troubleshooten

Het heeft trouwens wel gewerkt op deze manier met dezelfde namen voor variabelen, maar ik weet niet meer hoe.
Weinig kans, die functionaliteit is denk ik net zo oud als batch scripting zelf (rond 1981)
 
De namen van de variabelen veranderen heeft gewerkt, dankje :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan