Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Variable einer CMD-Sub-Routine an Haupt-Routine zurückgeben bzw. übertragen - Wie?

Frage Entwicklung Batch & Shell

Mitglied: Kranzfr3d

Kranzfr3d (Level 1) - Jetzt verbinden

05.10.2012 um 11:00 Uhr, 2567 Aufrufe, 3 Kommentare

Moin,

ich habe folgendes anliegen:
Ich starte von einer "Hauptprogramm.cmd" eine "Nebenprogramm.cmd".
Diese Nebenprogramm.cmd überprüft etwas, und soll die Variable der Hauptprogramm.cmd zurückgeben.

Klingt einfach, ich verzwifle aber seit geschlagenen zwei Tagen daran.
Natürlich könnte ich den Wert in eine temp. Textdatei schreiben und im Hauptprogramm wieder einlesen, das möchte ich aber nicht.

Soo, nun zur CMD:
Auszug aus der Hauptprogramm.cmd
01.
@echo off & setlocal enabledelayedexpansion 
02.
 
03.
::	Variablendeklaration 
04.
set wichtigevar= 
05.
 
06.
::	Überprüfung 
07.
Start /min /WAIT "name_Nebenprogramm" "Nebenprogramm.cmd" 
08.
 
09.
if "%wichtigevar%"==etwas goto etwas_irgendwohin 
10.
if "%wichtigevar%"==wasanderes goto wasanderes_irgendwohin 
11.
goto check_failed 
12.
###schnipp###
Komplette Nebenprogramm.cmd:
01.
@echo off & setlocal enabledelayedexpansion 
02.
schleifenüberprüfung mit DO (set wichtigevar=%%i) 
03.
if wichtigevar=="bliblubb" set wichtigevar=etwas 
04.
if wichtigevar=="blubbblubb" set wichtigevar=wasanderes 
05.
 
06.
exit
So - nun zum Problem:
Obwohl "wichtigevar" am Anfang "leer" definiert wurde, existiert sie nach
01.
Start /min /WAIT "name_Nebenprogramm" "Nebenprogramm.cmd"
nicht mehr, da sie nach Beendigung der Nebenprogramm.cmd gelöscht wird.
Auch, wenn ich "künstlich" (mittels ping localhost -n 10 > nul) offen lasse, kommt die Hauptprogramm.cmd nicht an die Variable ran.

Nun die Frage: Wie kommt die Veriable wieder "wohlbehalten" ins Hautprogramm zurück?


Ich habe mich schon informiert und meine, die Lösung liegt irgenwie hier begraben in der Nebenprogramm.cmd:
01.
endlocal & set wichtigevar=%wichtigevar%
Aber müssen evtl. das Neben- und Hauptprogramm verändert werden?


Ich bitte um eure Hilfe - mein Dank sei euch gewiss!


MFG
Mitglied: Dani
05.10.2012 um 11:07 Uhr
Moin,
les dir die Antwort von Biber durch.


Grüße,
Dani
Bitte warten ..
Mitglied: andimue
05.10.2012 um 11:24 Uhr
Ich persönlich arbeite gerne so, dass ich (wenn möglich) keine Unterprogramm-CMDs verwende sondern diese als Sub-Prozeduren in die Hauptprogramm-CMD einbaue. Damit habe ich dann keine Probleme Werte von der Unter- an die Hauptroutine zu übergeben. Natürlich ist das nicht wirklich die Antwort auf deine Frage aber vielleicht ein Denkanstoss.

Also etwas in der Art (quick & dirty):

01.
@echo off 
02.
::::::::::::::::::::::::::::::::::::::::::: 
03.
::  Laenge des Inhalts einer Variablen ermitteln 
04.
::::::::::::::::::::::::::::::::::::::::::: 
05.
 
06.
 
07.
::::::::::::::::::::::::::::::::::::::::::: 
08.
::  Hauptprogramm 
09.
::::::::::::::::::::::::::::::::::::::::::: 
10.
call :GetLength "%string%" 
11.
echo. 
12.
echo  Laenge = %len% 
13.
pause 
14.
goto :EOF 
15.
 
16.
::::::::::::::::::::::::::::::::::::::::::: 
17.
::  Unterprogramm 
18.
::::::::::::::::::::::::::::::::::::::::::: 
19.
:GetLength 
20.
echo WScript.Echo Len(WScript.Arguments(0))>"%Temp%\Len.vbs" 
21.
for /f %%i in ('cscript //nologo "%Temp%\Len.vbs" %1') do set Len=%%i 
22.
del "%Temp%\Len.vbs" 
23.
goto :EOF
Bitte warten ..
Mitglied: pieh-ejdsch
05.10.2012, aktualisiert um 12:39 Uhr
moin,

steht in diesem Abschnitt beschrieben:
Verwenden von SETLOCAL und ENDLOCAL

Ob ein Unterprogramm eine :Marke oder ein seperater Batch ist, spielt dabei keine Rolle.
[edit]
als Test auf der CMD-Line:
>for %i in (start call cmd ) do @echo(&echo Befehl %i:&for /f tokens^=1^,*delims^=: %h in (' %i /? ^|findstr /n "^" ^|findstr /b [1-2]: ' ) do @echo(%i
Wobei Start aber etwas eigenes an sich hat.
[/edit]

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Assembler
Assembler-Routine portieren: x86 auf x64
gelöst Frage von AnkhMorporkAssembler4 Kommentare

Hallo in die Runde, ich habe eine Verständnisfrage. Habe folgende Assembler-Routine erstellt: Programmier-Umgebung: Lazarus-Pascal 1.2.4. mit fpc 2.6.4 Ist ...

Windows 7
Windows 7 Update-Routine endet in Endlosschleife
gelöst Frage von GarroshWindows 7

Guten Tag liebe Community, Da mich Windows 10 genervt hat mit ungefragten App-Installationen die man nicht mal mehr mit ...

C und C++
C-Sharp - Zyklischer Methodenaufruf in TimerElapsed-Event-Routine bleibt stehen
gelöst Frage von mabue88C und C++6 Kommentare

Hallo, um die Eingänge (analog & digital) einer USB-Interfacekarte (Velleman K8055) einzulesen habe ich die dafür verfügbare DLL in ...

Installation
Suche jemanden mit Erfahrung mit dem Programm Inno zum Erstellen von Install-Routinen
gelöst Frage von 115122Installation3 Kommentare

Hallo, ich möchte gerne eine Install-Routine schreiben. Dazu habe ich bis jetzt folgenden Code: Dieser startet mir ein Setup, ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 StundeInternet1 Kommentar

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 7 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 18 StundenWindows 103 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 20 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...