supido
Goto Top

Übergabe der Variablen bei Call funktioniert nicht

Hallo,

ich komme mit menem untenstehnden Code nicht weiter.
In :install bekomme ich nicht die richtigen Variablen ("%Pathdriver%" "%Printername%") übergeben und ich sehe nicht, weshalb es nicht funktioniert.
Danke im Voraus für die HIlfe.
René

@echo off & setlocal enabledelayedexpansion
goto start
:start
IF [%1]==[/?] goto help
echo Bitte Drucker-Typ  auswählen:
echo.
echo  ML-3310:        [1]
echo  HP-400:          [2]
echo  HP 402:          [3]
echo  PDFCreator:  [4]


SET /p printertype=
For %%A in (1 2 3 4 A) Do (if /i '%printertype%'=='%%A' call :temp %%A)  
Echo Ungültige Antwort&Pause&Exit /B 1

:temp
if "%1" == "1" (set "PathDriver=.\samsung"   
set "PrinterName=ML-3310"   
call :install "%Pathdriver%" "%Printername%"  
goto :eof)

if "%1" == "2" (set "PathDriver=.\HPUPD\PCL6"   
set "Printername=HP-400"  
call :install "%Pathdriver%" "%Printername%"  
goto :eof)

if "%1" == "3" (set "PathDriver=.\HPUPD\PCL6"   
set "Printername=HP-402"  
call :install "%Pathdriver%" "%Printername%"  
goto :eof)

if "%1" == "4" (set "PathDriver=.\pdfcreator"  
set "PrinterName=PDFCreator"  
call :install "%Pathdriver%" "%Printername%"  
goto :eof)

:install
echo %~1 %~2
goto start

:help
Echo Hilfe nicht verfügbar
goto :eof

Content-ID: 297741

Url: https://administrator.de/forum/uebergabe-der-variablen-bei-call-funktioniert-nicht-297741.html

Ausgedruckt am: 23.12.2024 um 00:12 Uhr

126919
Lösung 126919 29.02.2016 aktualisiert um 20:19:53 Uhr
Goto Top
Mal wieder jemand der DelayedExpansion zwar in seinem Skript einschaltet aber anscheinend nicht weiß wozu face-wink.
http://ss64.com/nt/delayedexpansion.html

Bei DelayedExpansion und dem Setzen von Variablen innerhalb eines geklammerten Ausdrucks musst du sie nicht mit Prozentzeichen einschließen sondern mit Ausrufezeichen: !Variable!

Gruß fk

By the way, die Auswahl für den User kannst du per choice wesentlich vereinfachen face-wink anstatt dafür extra eine FOR-Schleife zu verpulvern...
choice /c 1234 /m "Ihre Eingabe"  
http://www.robvanderwoude.com/choice.php
Supido
Supido 29.02.2016 um 20:19:50 Uhr
Goto Top
Hi fk,
danke für deine Hinweise, ich habe es jetzt so gelöst:
@echo off & setlocal enabledelayedexpansion
set ipadresse=192.168.136.5
goto start
:start
IF [%1]==[/?] goto help
echo Bitte Drucker-Typ  auswählen:
echo.
echo  ML-3310:      [1]
echo  HP-400:       [2]
echo  HP 402:       [3]
echo  PDFCreator:   [4]
echo  Alle Drucker: [A]


SET /p printertype=
For %%i in (1 2 3 4 A) Do (if /i '%printertype%'=='%%i' call :temp %%i)  
Echo Ungültige Antwort&Pause&Exit /B 1

:temp
if "%1" == "1" (set PathDriver=".\samsung\ssi1m.inf"   
set PrinterName="Samsung ML-331x Series"   
set FriendlyName="Samsung ML-3310"  
call :install !Pathdriver! !Printername! !FriendlyName!
goto :eof)

if "%1" == "2" (set PathDriver=".\HPUPD\PCL6\hpbuio170l.inf"   
set Printername="HP Universal Printing PCL 6"  
set FriendlyName="HP Laserjet Pro M400"  
call :install !Pathdriver! !Printername! !FriendlyName!
goto :eof)

if "%1" == "3" (set "PathDriver=.\HPUPD\PCL6\hpbuio170l.inf"   
set Printername="HP Universal Printing PCL 6"  
set FriendlyName="HP Laserjet Pro M402"  
call :install !Pathdriver! !Printername! !FriendlyName!
goto :eof)

if "%1" == "4" (set PathDriver=".\pdfcreator"  
set PrinterName="PDFCreator"  
set FriendlyName="PDFDrucker  
call :install !Pathdriver! !Printername! !FriendlyName!
goto :eof)

:install
echo Path:        %~1 
echo Druckername: %~2 
echo Anzeigename: %~3
echo.
echo Installiere %~3
Pause
 if /i "%~3"=="PDFDrucker" (  
 echo......
 if exist "C:\Programme\PDFCreator\unins000.exe" "C:\Programme\PDFCreator\unins000.exe" /SILENT /NOREBOOT  
 if exist c:\windows\system32\pdfcmnnt.dll del c:\windows\system32\pdfcmnnt.dll
 start/wait %~1\pdfcreator.exe /LOADINF="%~1\install.inf" /ForceInstall /SILENT /NOCANCEL /NORESTART  
) else (
  start/wait cscript %WINDIR%\System32\Printing_Admin_Scripts\de-de\Prnport.vbs -a -r %ipadresse% -h IP_%ipadresse% -o raw -n 9100
  start/wait rundll32 printui.dll,PrintUIEntry /ia /m "%~2" /F "%~1"  
  start/wait rundll32 printui.dll,PrintUIEntry /if /b "%~3" /F "%~1" /r "%ipadresse%" /m "%~2" /z  
)
 goto start

:help
Echo Hilfe nicht verfügbar
goto :eof