moiko89
Goto Top

Kommunikation innerhalb CMD bzw Batchfiles durch Variablen

Moin Moin

Gibt es eine bekannte Möglichkeit, Werte bzw Variablen innerhalb CMD auszutauschen?
Also ich habe zwei Batchfiles die Variablen austauschen sollen, also sowas wie die Globale Variable
aber die scheint es ja in der Batch nicht zu geben.
Habe das momentan mit einer Datei gelöst, scheint mir aber eine ehr unelegante Art zu sein face-smile

Hoffe ihr könnt mir helfen.

Schöne Grüße

Content-ID: 185140

Url: https://administrator.de/contentid/185140

Ausgedruckt am: 25.11.2024 um 03:11 Uhr

refLye
refLye 18.05.2012 um 08:26:58 Uhr
Goto Top
Verstehe ich das richtig? Du hast eine Variable 1 mit einem bestimmten Wert. Und du willst diesen Wert aus Variable 1 in Variable zwei übernehmen?

So:
@echo off
set VARIABLE1=Test
set VARIABLE2=%VARIABLE1%
set VARIABLE1=
?
moiko89
moiko89 18.05.2012 um 09:26:33 Uhr
Goto Top
Nicht ganz, variable2 befindet sich in einer 2. Batch.
Sprich ich möcht den wert von variable1 aus der einen batch in variable2 in die andere batch übergeben.
Skyemugen
Skyemugen 18.05.2012 um 10:19:54 Uhr
Goto Top
Aloha,

wo ist das Problem?

call batch2.bat %variable1% zusammen mit set variable2=%1 oder wie oder was?

Das Thema gibt's doch nun wirlich aberdrölftrillionen Mal im Internet zu begutachten ...

greetz André
moiko89
moiko89 18.05.2012 um 11:16:55 Uhr
Goto Top
Jaaahaaa soweit war ich auch allerdings öffnet sich dann die batch nach dem call im gleichen fenster, aber ich möchte ja 2 fenster bzw zwei batch. face-smile
bastla
bastla 18.05.2012 um 12:11:59 Uhr
Goto Top
Hallo moiko89!

Na dann eben:
set "Variable=whatever"  
start "Fenster2" "D:\Dein zweiter Batch.cmd"  
- wobei Du im Zweifelsfall, wie von Skye schon angedeutet, den Wert der Variablen auch einfach als Parameter beim Aufruf des zweiten Batches übergeben könntest ...

Grüße
bastla
moiko89
moiko89 18.05.2012 um 12:45:04 Uhr
Goto Top
Der Ansatz ist schonmal super, danke dafür! Aber nochnicht ganz so wie ich das haben möchte.

Hier mal die batch1.bat
@echo off
set /a var1=1
:start
start "fenster2" "D:\batchtest\batch2.bat"  
ping -n 5 localhost > nul
set /a var1=%var1% + 1
cls
goto start

Kurze Erklärung:
Die erste Batch setzt eine Variable bzw. zählt immer 1 zur Var1 hinzu, startet dannach die 2. Batch und übergibt den wert der Variable,
diesen Vorgang wiederholt sie alle 5 Sekunden. (Nachteil: Es wird immer ein neues Fenster geöffnet)

Dann mal zur 2. Batch
@echo off
set /a var1
echo %var1%
ping -n 5 localhost > nul
exit

Erklärung:
Diese Batch sollte eigl. den Wert der var1 nur aktualisieren, da das aber nur durch erneutes Aufrufen funktioniert,
schließt sie sich nach 5 Sekunden.
Dann wird sie eben durch die erste Batch wieder aufgerufen und zeigt den neuen Wert der Var1 an.
Alles ja schön und gut, aber geht das nicht geschmeidiger? face-smile
bastla
bastla 18.05.2012 um 14:10:46 Uhr
Goto Top
Hallo moiko89!
geht das nicht geschmeidiger? face-smile
Vielleicht wenn Du einmal den Sinn der ganzen Aktion erklären würdest ...

Grüße
bastla
pieh-ejdsch
pieh-ejdsch 19.05.2012 aktualisiert um 15:02:17 Uhr
Goto Top
Moin moiko89,

das habe ich doch im Tutorial: Batch Variablen Begrenzung und Veränderung der LaufzeitUmgebung schön mit Beispielen beschrieben.

Gruß Phil
pieh-ejdsch
pieh-ejdsch 21.05.2012 um 00:27:11 Uhr
Goto Top
moin,

was eventuell zum Aufteilen auf zwei batches Instanzen geht ist:
@echo off
::echo on
if "%~1" equ "" start "" cmd /c %0 Steuern  
findstr /ric:"^ *:%1 *$" %0 1>nul &&goto :%1  
if "%~1" neq "" goto :eof  

:run
title Batch eins Zeiger
set /a x+=2
waitfor /si run 1>nul 
waitfor check /t 4 2>&1 >nul ||exit /b
echo %x%
goto :run

:Steuern
title Batch zwei Steuern
waitfor /si check 1>nul
waitfor run /t 3 2>nul 1>&2 ||exit /b
ping localhost -n 3 1>nul
echo neu
goto :Steuern

Kann aber genausowenig Variablenwerte hervorkramen. Über eine Datei ist es doch am sinnvollsten bei zwei gleichzeitigen Instanzen die Variablen "auzutauschen".

Gruß Phil