Batch Warum geht das Programm ohne GOTO nicht?

kinimod2010

Cadet 4th Year
Registriert
Sep. 2014
Beiträge
68
Hallo Leute ich bin an dem schon einige Tage gesessen und ich bin langsam am Verzweifeln. Ich weiß nicht warum das Programm mit GOTO funktioniert und ohne nicht? Ich versteh es einfach nicht ;(. Ich bitte um Hilfe.

Ich willd das ändern, da es nicht schön ist.

Code:
      echo 2.Bereich
        echo %MATLAB_ROOT_64%
        for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET MATLAB_ROOT_64=%%i)
          GOTO Split2
          :Split2
        REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
        for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_64%") do set useless1=%%a&set useless2=%%b&set MATLAB_x64=%%c
        set MATLAB_x64=%MATLAB_ROOT_64:~24% 
		        PAUSE
        GOTO Compiler_Wahl[/spoiler]
 
Zuletzt bearbeitet:
Das GOTO in Zeile 4 springt direkt in Zeile 5. Das kann man sich wahrscheinlich sparen.
Das GOTO in Zeile 10 springt ins leere, weil :Compiler_Wahl hier nirgends zu finden ist.

Ist das der ganze Code?
 
Ob schön oder nicht ist doch egal solange es funktioniert? Is ja nicht so dass ein Batchfile schön sein muss oO
 
Ich geh' mal davon aus, du meinst Zeile 4 und 5. Batchs reagieren manchmal doch sehr komisch. V.a. reagieren sie auch auf Leerzeichen und tabs. Sind die Zeilenanfänge wirklich eingerückt?

Und noch was anderes.
Code:
set MATLAB_x64=%%c
set MATLAB_x64=%MATLAB_ROOT_64:~24%

Welchen Sinn hat das?
 
Unbenannt.PNG@simsonfan

um aus der MATLAB_ROOT auf die Matlab_x64 zu kommen mach ich die 2 Zeilen siehe Bild (Ich bin nicht der Profi im Batch files programmieren)

Hier der ganze Code:

Code:
@Echo off
echo %PathExt%
SET PATHEXT=.com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh
REM ------------------------------------------------
REM Diese Pfade muessen vom User angepasst werden
REM ------------------------------------------------


REM ----- Auswahl: 32bit oder 64bit (Programme und Kompilate) -----
set USEDBits=64
set MATLAB_x32=
set MATLAB_x64=
set MATLAB_ROOT_32=
set MATLAB_ROOT_64=
set MATLABROOT=
set a=
set b=
set c=
set i=

REM ----- Pfad zur Dymola-Installation -----
set DYMOLA=C:\app\tools\Dymola2014

REM ----- Pfad zur Matlab-Installation -----
ECHO Auswahl der Matlab-Version:
ECHO.
if "%USEDBits%"=="64" (
 ECHO Sie haben die 64 bit Variante in der Userpath eingestellt
 ) else (
 ECHO Sie haben die 32 bit Variante in der Userpath eingestellt
 )  
ECHO.
ECHO (1) Matlab R2007b
ECHO (2) Matlab R2009bSP1
ECHO (3) Matlab R2011b
ECHO (4) Matlab R2013bx64
ECHO ---------------------
ECHO (0) Abbruch
ECHO ---------------------
ECHO.
SET /p Variable=Auswahl:
IF %Variable%==1 GOTO Matlab2007b
IF %Variable%==2 GOTO Matlab2009bSP1
IF %Variable%==3 GOTO Matlab2011b
IF %Variable%==4 GOTO Matlab2013bx64
IF %Variable%==0 GOTO Abbruch
:Fehler
ECHO Falsche Auswahl!!
PAUSE
CLS

REM *************************************************************************************************
REM ************************* Auswahl der Matlab-Version ********************************************

:Matlab2007b
if "%USEDBits%"=="32" (
REM ---- 32bit
for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.5 /v MATLABROOT') do (SET MATLAB_ROOT_32=%%i)
REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_32%") do set useless1=%%a&set useless2=%%b&set MATLAB_x32=%%c
) else (
REM ---- 64bit
for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.5 /v MATLABROOT') do (SET MATLAB_ROOT_64=%%i)
REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_64%") do set useless1=%%a&set useless2=%%b&set MATLAB_x64=%%c
)
GOTO Compiler_Wahl

:Matlab2009bSP1
if "%USEDBits%"=="32" (
        echo 1.Bereich
        REM ---- 32bit
        for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET MATLAB_ROOT_32=%%i)
        set MATLABROOT=
        set i=
        GOTO Split1
        :Split1
        REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
        for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_32%") do set useless1=%%a&set useless2=%%b&set MATLAB_x32=%%c
        set a=
        set b=
        set c=
        REM PAUSE
        echo %Matlab_x32%
	    GOTO Compiler_Wahl
) else (
        echo 2.Bereich
        REM echo %MATLAB_ROOT_64%
        REM ---- 64bit
REM         set i=
REM         set MATLABROOT=
REM         set MATLAB_ROOT_64=
        for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET MATLAB_ROOT_64=%%i)
        GOTO Split2
        :Split2
REM         set a=
REM         set b=
REM			set c=
        REM set MATLAB_x64=
        REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
        for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_64%") do set useless1=%%a&set useless2=%%b&set MATLAB_x64=%%c
        REM echo 2.2
        REM echo %MATLAB_x64%
        set Matlab_x64=%MATLAB_ROOT_64:~24% 
		echo %Matlab_x64%
		
        GOTO Compiler_Wahl
)


:Matlab2011b
if "%USEDBits%"=="32" (
REM ---- 32bit
for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.13 /v MATLABROOT') do (SET MATLAB_ROOT_32=%%i)
REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_32%") do set useless1=%%a&set useless2=%%b&set MATLAB_x32=%%c
) else (
REM ---- 64bit
for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.13 /v MATLABROOT') do (SET MATLAB_ROOT_64=%%i)
REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_64%") do set useless1=%%a&set useless2=%%b&set MATLAB_x64=%%c
)
GOTO Compiler_Wahl

:Matlab2013bx64
if "%USEDBits%"=="32" (
REM ---- 32bit
for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\8.2 /v MATLABROOT') do (SET MATLAB_ROOT_32=%%i)
REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_32%") do set useless1=%%a&set useless2=%%b&set MATLAB_x32=%%c
) else (
REM ---- 64bit
for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\8.2 /v MATLABROOT') do (SET MATLAB_ROOT_64=%%i)
REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_64%") do set useless1=%%a&set useless2=%%b&set MATLAB_x64=%%c
)
GOTO Compiler_Wahl


:Abbruch
ECHO.Abbruch durch Benutzer
PAUSE
Exit

:Compiler_Wahl
REM ----- Pfad zur Installation des Visual-Compiler -----
REM set VSINSTALLDIR=C:\app\tools\MSVC9
set VSINSTALLDIR=C:\app\tools\MSVisualExpress2010
set VCINSTALLDIR=%VSINSTALLDIR%
set DEVENVDIR=%VSINSTALLDIR%\Common7\IDE
set COMPILER=msvc2010
REM set WINDOWSSDKDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\
set WINDOWSSDKDIR=C:\Program Files\Microsoft SDKs\Windows\v7.1\


REM ----- Pfad zur Softcar-Version -----
set SOFTCAR=V:\tools\pc\softcar
set SOFTCAR_PATH_SC=%SOFTCAR%\sc
set SOFTCAR_PATH_RTLITE=%SOFTCAR%\sc_rt_lt
set SOFTCAR_PATH_ddk=%SOFTCAR%\ddk_nt4

REM ----- Pfad wo die Zieldateien stehen sollen -----
set SOFTCAR_USERPRODUCT_PATH=%cd%\Softcar

REM ----- Pfad zur Softcar-Version -----
set DSPACE=C:\app\tools\dspace71

REM ----- optional: Pfad zur ZBF-Daten -----
REM set ZBFROOT=%PROJDIR%\ZBFData
REM set ZBFFILENAME=Table2D_AllInOne.zbf

LG Dominik
 
Zuletzt bearbeitet: (Fehlendes Bild)
Also die Zuweisung in Zeile 101 reicht eigentlich, da brauchst du nicht noch mal in Zeile 104 erneut zuweisen.

Wie oft wird eigentlich die Schleie in Zeile 93 durchloffen? Das GOTO steht ja außerhalb davon. So wirklich weiß ich da auch nicht weiter. Letztlich stimmt, was Visceroid sagt, Hauptsache es funktioniert.
Ergänzung ()

Also ich hab mal nur den Codeschnipsel mit dem Auslesen des Verzeichnisses aus der Registry versucht, da konnte ich, wie zu erwarten, das GOTO einfach weglassen.
 
Ich habe das alles jetzt nochmal überarbeitet, hier ist nochmal mein Codeschnipsel :)

Ich habe es nochmal probiert, mit einfach wegschneiden, aber es funktioniert nicht. Ich habe auf dem Computer Windows 7 64 Bit laufen. Kann das das das Problem sein?

Code:
if "%USEDBits%"=="32" (
        echo 3.Bereich
        REM ---- 32bit
			for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET MATLAB_ROOT_32=%%i)
        
		GOTO Split1
        :Split1
        REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
		REM -- only us the 3 token 
        for /f "tokens=3 delims= " %%a in ("%MATLAB_ROOT_32%") do set MATLAB_x32=%%a
        
        REM PAUSE
        echo %Matlab_x32%
	    GOTO Compiler_Wahl
) else (
		echo 4.Bereich
		REM ---- 64bit
        	for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET MATLAB_ROOT_64=%%i)
       
		GOTO Split2
		:Split2		
		REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
		REM -- only us the 3 token 
		for /f "tokens=3 delims= " %%a in ("%MATLAB_ROOT_64%") do set MATLAB_x64=%%a
		
		REM PAUSE
		echo %Matlab_x64%		
		GOTO Compiler_Wahl
		)

Vielen Dank schon mal hast mir sehr weitergeholfen!!!
 
Zuletzt bearbeitet:
An welcher Stelle hakt es denn? Bzw. wann genau tritt ein Fehler auf? Ebenfalls unter Win7 64bit läuft bei mir folgendes:
Code:
for /f "tokens=*" %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\8.0 /v MATLABROOT') do (SET MATLAB_ROOT_64=%%i)
Matlab_x64=%MATLAB_ROOT_64:~24%
echo %Matlab_x64%
pause

Ich hab mich mal des ~24 bedient, da das Leerzeichen in "Program Files" bei mir sonst entgegen stünde.
Dazu braucht es auf jeden Fall kein Goto.
Ich würde momentan jedenfalls noch auf ein fehlplatriertes Leerzeichen oder was in der Art tippen. Vllt. hängt es aber auch mit was anderem zusammen.
Funktioniert denn einfach nur der obige Schnipsel, ohne sonst noch was, oder gibt's da auch schon einen Fehler?
 
Guten Morgen,

Es funktioniert der schnipsel auch schon nicht.

Er gibt mir das aus:

FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
~24
Drücken Sie eine beliebige Taste . . .

ich schau nochmal wegen den leerzeichen

Danke Lg
 
Ähm ja, mein Fehler. Ich hatte die Versionsnummer geändert, weil ich grade R2012b installiert hab. Musst du natürlich wieder entsprechend in 7.9.1 ändern. Oder halt irgend einen beliebigen Schlüssel nehmen, der vorhanden ist.
 
Hallo :)

nur der schnipsel funktioniert aber wenn ich ihn ins programm einbette funktioniert es wieder nicht.
ich hab dann auch nachgeschaut was in Matlab_x64 drinnen steht --> ~24 steht drinnen aber nicht der pfad :/

Ich hab auch nochmal getestet ob nur mein schnippsel funktioniert und es funktioniert aber alles zusammen nicht ;(

Lg Dominik

Hab jetzt deines nochmal bearbeitet und bin auf das gekommen

Code:
for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET Matlab_x64=%%i)
 
Zuletzt bearbeitet:
Was genau ist eigentlich dein Ziel? Muss die Batch nachher auf verschiedenen Rechnern mit unterschiedlichen Matlabinstallationen funktionieren oder nur bei dir? Wenn nur bei dir, würde ich nämlich mal den ganzen Rest rausschmeißen und den Pfad einfach hardcoden.

Ich hab mir das auch nochmal angeguckt. Es liegt an der IF-ELSE Verzweigung.
Während du dich darin befindest, wird die Variable MATLAB_ROOT_64 nicht expandiert. Das GOTO springt quasi aus der Verzweigung raus und steigt neu ein, so als wär die garnicht da. Wenn du die ELSE-Verzweigung nach Zeile 93 abschließst, also noch eine Klammer dazu, dann klappt es auch ohne Goto.
Zwar würden dann Zeile 101 und 104 auch im hypothetischen 32bit Fall (der allerdings sowieso schon in Zeile 10 unterbunden wird) ausgeführt, das würde aber die Funktionalität nicht beeinträchtigen.

Und überhaupt, wenn es dir um die Schönheit bzw. Lesbarkeit der Batch geht, würde ich wie gesagt erstmal den ganzen Kram, den du nicht brauchst (32bit if-else, andere Matlabversionen und die ganzen auskommentierten Zeilen) rausschmeißen.
 
Was genau ist eigentlich dein Ziel? Muss die Batch nachher auf verschiedenen Rechnern mit unterschiedlichen Matlabinstallationen funktionieren oder nur bei dir? Wenn nur bei dir, würde ich nämlich mal den ganzen Rest rausschmeißen und den Pfad einfach hardcoden.

Die Batch datei wird auf einem Server gestartet und startet dann Matlab mit diversen einstellungen. Wenns nur für mich wäre würde ich den Pfad schon längst eingegeben haben :p

Stimmt es funktioniert wenn ich die Klammer nach der Zeile 93 nochmal zu mache? Einfach der wahnsinn vielen Dank für deine hilfe. jetzt verstehe ich bisschen mehr von Batch programmieren.

Vielen Dank für deine Hilfe vl hab ich nochmal probleme dann meld ich mich nochmal.

Lg Dominik
 
Naja, so richtig verständlich ist das ja auch nicht, Batchdateien spinnen manchmal einfach ein wenig. Und noch was, da hätte ich auch schon früher drauf kommen können, aber irgendwie wollte es nicht so recht.

Versuch mal die verzügerte Expansion von Variablen. Dazu am Anfang der Batch
Code:
setlocal EnableDelayedExpansion
einfügen. Und dann in den unteren Zeilen die % durch ! ersetzen, also aus
Code:
for /f "tokens=3 delims= " %%a in ("%MATLAB_ROOT_64%") do set MATLAB_x64=%%a
...
echo %Matlab_x64%

mach
Code:
for /f "tokens=3 delims= " %%a in ("!MATLAB_ROOT_64!") do set MATLAB_x64=%%a
...
echo !Matlab_x64!

Das sollte dann auch klappen.
Aber nicht vergessen überall wo die Variable Matlab_x64 gebraucht wird die ! zu setzen.
 
Habe den Fehler gefunden warum es dann noch immer nicht funktioniert hat.

Ich habe zu beginn unnötig inizialisiert.

Das ist jetzt mein fertiges Programm. Danke dir nochmal du hast mir sehr weitergeholfen.

Code:
@echo off

REM ------------------------------------------------
REM Diese Pfade muessen vom User angepasst werden
REM ------------------------------------------------

REM ----- Auswahl: 32bit oder 64bit (Programme und Kompilate) -----
set USEDBits=64
set MATLAB_x32=Nix drin xD
set MATLAB_x64=Nix drin xD

REM ----- Pfad zur Dymola-Installation -----
set DYMOLA=C:\app\tools\Dymola2014

REM ----- Pfad zur Matlab-Installation -----
ECHO Auswahl der Matlab-Version:
ECHO.
if "%USEDBits%"=="64" (
ECHO Sie haben die 64 bit Variante in der Userpath eingestellt
) else (
ECHO Sie haben die 32 bit Variante in der Userpath eingestellt
)  
ECHO.
ECHO (1) Matlab R2007b
ECHO (2) Matlab R2009bSP1
ECHO (3) Matlab R2011b
ECHO (4) Matlab R2013bx64
ECHO ---------------------
ECHO (0) Abbruch
ECHO ---------------------
ECHO.
SET /p Variable=Auswahl:
IF %Variable%==1 GOTO Matlab2007b
IF %Variable%==2 GOTO Matlab2009bSP1
IF %Variable%==3 GOTO Matlab2011b
IF %Variable%==4 GOTO Matlab2013bx64
IF %Variable%==0 GOTO Abbruch
:Fehler
ECHO Falsche Auswahl!!
PAUSE
CLS

REM *************************************************************************************************
REM ************************* Auswahl der Matlab-Version ********************************************

:Matlab2007b
if "%USEDBits%"=="32" (
        echo 1.Bereich
        REM ---- 32bit
        REM -- Only using the 3 Token using space as delimiter 
        for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.1 /v MATLABROOT') do (SET Matlab_x32=%%i)
		echo %Matlab_x32%
        GOTO Compiler_Wahl
) else (
        echo 2.Bereich
        REM ---- 64bit
        REM -- Only using the 3 Token using space as delimiter
        for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.1 /v MATLABROOT') do (SET Matlab_x64=%%i)
        echo %Matlab_x64%
        GOTO Compiler_Wahl
)

:Matlab2009bSP1
if "%USEDBits%"=="32" (
        echo 3.Bereich
        REM ---- 32bit
        REM -- Only using the 3 Token using space as delimiter
        for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET Matlab_x32=%%i)
		echo %Matlab_x32%
        GOTO Compiler_Wahl
) else (
        echo 4.Bereich
        REM ---- 64bit
        REM -- Only using the 3 Token using space as delimiter
	    for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET Matlab_x64=%%i)
        echo %Matlab_x64%
        GOTO Compiler_Wahl
)

:Matlab2011b
if "%USEDBits%"=="32" (
        echo 5.Bereich
        REM ---- 32bit
        REM -- Only using the 3 Token using space as delimiter
        for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.13 /v MATLABROOT') do (SET Matlab_x32=%%i)
		echo %Matlab_x32%
        GOTO Compiler_Wahl
) else (
        echo 6.Bereich
        REM ---- 64bit
        REM -- Only using the 3 Token using space as delimiter
        for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.13 /v MATLABROOT') do (SET Matlab_x64=%%i)
        echo %MATLAB_x64%
        GOTO Compiler_Wahl
)

:Matlab2013bx64
if "%USEDBits%"=="32" (
        REM ist bei mir nicht Verfügbar
        echo 7.Bereich
		echo Leider nicht Verfuegbar!!!
        GOTO Compiler_Wahl
) else (
       echo 8.Bereich
       REM ---- 64bit
       for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\8.2 /v MATLABROOT') do (SET Matlab_x64=%%i))
       REM -- Only using the 3 Token using space as delimiter
       echo %Matlab_x64%                    
       GOTO Compiler_Wahl
)

:Abbruch
ECHO.Abbruch durch Benutzer
PAUSE
Exit

:Compiler_Wahl
Ergänzung ()

Hallo hab jetzt leider noch ein Problem :(

Ich hab jetzt den Pfad in Matlab_x64

will was an den Pfad anhängen.

Normal geht das ja mit:

Code:
set "mist=bin\matlab.exe"
set "%Matlab_x64%=%Matlab_x64%%mist%"
echo %Matlab_x64%

Die Ausgabe ist dann :

3.Bereich
C:\app\Matlab\R2009bSP1\
\bin\matlab.exe

untereinander aber nicht nebeneinander was mach ich jetzt :S
 
Zuletzt bearbeitet:
Ähm, die Anführungszeichen gehören da aber eigentlich nicht hin. Funktioniert das damit überhaupt?

Probier mal einfach
Code:
set Matlab_x64=%Matlab_x64%bin\matlab.exe
echo %Matlab_x64%

Zeilenumbrüche in Variablen geht doch in Batch eigentlich gar nicht?
 
Zuletzt bearbeitet:
Hallo,

Es funktioniert im Großen und Ganzen aber jetzt hab ich leider ein Problem

Ich starte die Batchdatei und erfindet den 64 bit Pfad nicht er nimmt immer die 32 Bit Matlab Version :(

sonst funktioniert alles einwandfrei dh der fehler sollte eig in den 58,75,92 & 106 Zeilen liegen. ( hab da noch ein sleep eingebaut um zu sehn welchen Pfad er nimmt und es ist wirklich der 32 Bit Pfad )

Benutze ein Windows 7
 
Sorry, hab hier nicht mehr reingeguckt. kannst du mal noch mal den Code, wie er jetzt ist, posten? Pack's am besten in [spoiler][code]...[/code][/spoiler] Tags, das bewahrt die Übersichtlichkeit im Thread ein bisschen.
 
Code:
@Echo off
REM ------------------------------------------------
REM Diese Pfade muessen vom User angepasst werden
REM ------------------------------------------------


REM ----- Auswahl: 32bit oder 64bit (Programme und Kompilate) -----
set USEDBits=32
set Matlab_x64=0
set Matlab_x32=0

REM ----- Pfad zur Dymola-Installation -----
set DYMOLA=C:\app\tools\Dymola2014

REM ----- Pfad zur Matlab-Installation -----
ECHO Auswahl der Matlab-Version:
REM ECHO.
if "%USEDBits%"=="64" (
 ECHO Sie haben die 64 bit Variante in der Userpath eingestellt
 ) else (
 ECHO Sie haben die 32 bit Variante in der Userpath eingestellt
 )  
ECHO.
ECHO (1) Matlab R2007b
ECHO (2) Matlab R2009bSP1
ECHO (3) Matlab R2011b
ECHO (4) Matlab R2013bx64
ECHO ---------------------
ECHO (0) Abbruch
ECHO ---------------------
ECHO.
SET /p Variable=Auswahl:
IF %Variable%==1 GOTO Matlab2007b
IF %Variable%==2 GOTO Matlab2009bSP1
IF %Variable%==3 GOTO Matlab2011b
IF %Variable%==4 GOTO Matlab2013bx64
IF %Variable%==0 GOTO Abbruch
:Fehler
ECHO Falsche Auswahl!!
PAUSE
CLS

REM *************************************************************************************************
REM ************************* Auswahl der Matlab-Version ********************************************

:Matlab2007b
if "%USEDBits%"=="32" (
REM ---- 32bit
for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.5 /v MATLABROOT') do (SET Matlab_x32=%%i)
REM ---- 64bit
) else ( for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.5 /v MATLABROOT') do (SET Matlab_x64=%%i))
echo 32 %Matlab_x32%
echo 64 %Matlab_x64%
GOTO Compiler_Wahl

:Matlab2009bSP1
if "%USEDBits%"=="32" (
REM ---- 32bit
for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET Matlab_x32=%%i)
REM ---- 64bit
) else (
for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET Matlab_x64=%%i))
echo 32 %Matlab_x32%
echo 64 %Matlab_x64%
GOTO Compiler_Wahl

:Matlab2011b
if "%USEDBits%"=="32" (
REM ---- 32bit
for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.13 /v MATLABROOT') do (SET Matlab_x32=%%i)
REM ---- 64bit
) else ( for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\7.13 /v MATLABROOT') do (SET Matlab_x64=%%i))
echo 32 %Matlab_x32%
echo 64 %Matlab_x64%
GOTO Compiler_Wahl

:Matlab2013bx64
if "%USEDBits%"=="32" (
REM ---- 32bit
echo Leider nicht Verfügbar!!!
REM ---- 64bit
) else (for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\Mathworks\Matlab\8.2 /v MATLABROOT') do (SET Matlab_x64=%%i))
echo 32 %Matlab_x32%
echo 64 %Matlab_x64%
GOTO Compiler_Wahl

:Abbruch
ECHO.Abbruch durch Benutzer
PAUSE
Exit

:Compiler_Wahl
if "%USEDBits%"=="32"(
set Matlab_x32=%Matlab_x32%bin\matlab.exe
start echo %Matlab_x32%)

else ( set Matlab_x64=%Matlab_x64%bin\matlab.exe
start echo %Matlab_x64%)

REM ----- Pfad zur Installation des Visual-Compiler -----
REM set VSINSTALLDIR=C:\app\tools\MSVC9
set VSINSTALLDIR=C:\app\tools\MSVisualExpress2010
set VCINSTALLDIR=%VSINSTALLDIR%
set DEVENVDIR=%VSINSTALLDIR%\Common7\IDE
set COMPILER=msvc2010
REM set WINDOWSSDKDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\
set WINDOWSSDKDIR=C:\Program Files\Microsoft SDKs\Windows\v7.1\


REM ----- Pfad zur Softcar-Version -----
set SOFTCAR=V:\tools\pc\softcar
set SOFTCAR_PATH_SC=%SOFTCAR%\sc
set SOFTCAR_PATH_RTLITE=%SOFTCAR%\sc_rt_lt
set SOFTCAR_PATH_ddk=%SOFTCAR%\ddk_nt4

REM ----- Pfad wo die Zieldateien stehen sollen -----
set SOFTCAR_USERPRODUCT_PATH=%cd%\Softcar

REM ----- Pfad zur Softcar-Version -----
set DSPACE=C:\app\tools\dspace71

REM ----- optional: Pfad zur ZBF-Daten -----
REM set ZBFROOT=%PROJDIR%\ZBFData
REM set ZBFFILENAME=Table2D_AllInOne.zbf

sry hab das gleiche auch hier gepostet : https://www.computerbase.de/forum/threads/registry-pfad-auslesen-flascher-pfad.1391346/#post-16267812
 
Zuletzt bearbeitet:
Oh, ja, dann machen wir halt in dem anderen Thread weiter. Auf einen sollte man sich ja dann schon beschränken, sonst wird's konfus.
 
Zurück
Oben