Batch Registry Pfad auslesen flascher Pfad

Nehmen wir das einfach hin mein Computer ist einfach sch*** und eingeschränkt bis aufs letzte :p

Vielen Dank für eure Hilfe ich werde mich noch bissi spielen und wenn es iwann funkt werde ich das hier posten ;P

DANKE LEUTE!!!
 
Das liest sich nicht wirklich wie eine Lösung für das Problem, aber na gut :D

Natürlich der Computer Schuld :D
Wer macht denn sonst die ganzen Fehler :D
 
Code:
: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 -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
REM for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_32%") do set useless1=%%a&set useless2=%%b&set MATLAB_x32=%%c
REM ---- 64bit
) else (
for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET Matlab_x32=%%i)
for /F "tokens=3*" %%i IN ('reg.exe query HKLM\SOFTWARE\Mathworks\Matlab\7.9.1 /v MATLABROOT') do (SET Matlab_x64=%%i))
REM -- Split the result into MATLABROOT, REG_SZ and Folder using space as delimiter
REM for /f "tokens=1,2,3 delims= " %%a in ("%MATLAB_ROOT_64%") do set useless1=%%a&set useless2=%%b&set MATLAB_x64=%%c
echo 32 %Matlab_x32%
echo 64 %Matlab_x64%

if %Matlab_x32%==%Matlab_x64% (
 set Matlab_x64=C:\app\Matlab\R2009bSP1x64
)

GOTO Compiler_Wahl

Das lustige ist ja das das hier funktioniert :D
 
Verwende einfach mal unterschiedliche Variablen. Also %%i nicht für beides verwenden. Gerade bei mehrfachen Durchläufen könnten dann komische Ergebnisse herauskommen.

lg
fire

edit: mal in der kommandozeile ausprobieren:
reg query HKLM\SOFTWARE\Mathworks\Matlab\7.9.1 /v MATLABROOT

Steht da wirklich der x64 Ordner drin? Ansonsten wäre es ja richtig.

In Post #23 wird das damit umgangen, das wenn beide Einträge gleich sind, bei der 64er das x64 drangesetzt wird. Quasi Hardcoded *gg*
 
Zuletzt bearbeitet:
Hallo Leute,

Ich habe eine Antwort gefunden seht CODE. Ich bin draufgekommen das mein windows iwie nicht die standert versionverwendet vom CMD.

Code:
@ECHO off
REM Command auslesen welcher Standard auf dem Rechner ist
set NATIVE_SHELL=%windir%\Sysnative\cmd.exe
if not exist %NATIVE_SHELL% set NATIVE_SHELL=%windir%\System32\cmd.exe
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%==32 (
ECHO Sie haben die 32 bit Variante in der Userpath eingestellt
) else (
ECHO Sie haben die 64 bit Variante in der Userpath eingestellt
)  
ECHO.
ECHO (1) Matlab R2007b
ECHO (2) Matlab R2009bSP1
ECHO (3) Matlab R2011b
ECHO (4) Matlab R2013b
ECHO ---------------------
ECHO (0) Abbruch
ECHO ---------------------
ECHO.
SET /p Variable=Auswahl:
IF %Variable%==1 set Matlabversion=7.5
IF %Variable%==2 set Matlabversion=7.9.1
IF %Variable%==3 set Matlabversion=7.13
IF %Variable%==4 set Matlabversion=8.2
IF %Variable%==0 GOTO Abbruch
if NOT %Matlabversion%=="" goto MatlabAuswahl
:Fehler
ECHO Falsche Auswahl!!
PAUSE
CLS

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

:MatlabAuswahl
if %USEDBits%==32 (
        REM ---- 32bit
        REM -- Only using the 3 Token using space as delimiter 
		%NATIVE_SHELL% /C reg.exe QUERY HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\%Matlabversion% /v MATLABROOT 1>NUL 2>NUL > Matlabpfad.txt
		for /f "tokens=3 delims= " %%i IN (Matlabpfad.txt) do (SET Matlab_x32=%%i)
		del Matlabpfad.txt /q
		REM for /f "tokens=3 delims= " %%i IN ('reg query HKLM\SOFTWARE\WOW6432NODE\Mathworks\Matlab\%Matlabversion% /v MATLABROOT') do (SET Matlab_x32=%%i)
        GOTO Compiler_Wahl
) else (
        REM ---- 64bit
        REM -- Only using the 3 Token using space as delimiter
		%NATIVE_SHELL% /C reg.exe QUERY HKLM\SOFTWARE\Mathworks\Matlab\%Matlabversion% /v MATLABROOT 1>NUL 2>NUL > Matlabpfad.txt
		for /f "tokens=3 delims= " %%i IN (Matlabpfad.txt) do (SET Matlab_x64=%%i)
		del Matlabpfad.txt /q
        GOTO Compiler_Wahl
)

:Abbruch
ECHO.Abbruch durch Benutzer
PAUSE
Exit

:Compiler_Wahl
ECHO Matlab 32 bit Pfad = %Matlab_x32%
ECHO Matlab 64 bit Pfad = %Matlab_x64%

trotzdem vielen dank
 
OK, gut dass es läuft. Warum es vorher zu dem Fehler kam ist trotzdem seltsam, aber so ist das mit Batch manchmal. Ich werd' mich auch irgendwann mal verstärkt mit Powershell beschäftigen müssen, ich hab' das Gefühl, da läuft manches doch besser.
 
Das diese Zeilen alles ändern können :)

Code:
set NATIVE_SHELL=%windir%\Sysnative\cmd.exe4.if not exist %NATIVE_SHELL% set NATIVE_SHELL=%windir%\System32\cmd.exe

Ich versuche nichts mehr mit bash zu machen ich werde mich mehr auf matlab und so spezialisieren wobei ich auch da kein profi bin :p
 
Wenns Proffesionell werden soll, dann macht man es eh per MSI Paket. Und sowas machen Paketierer, die auch richtig teuer sind.

lg
fire
 
Zurück
Oben