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-Key: 185140

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

Printed on: April 19, 2024 at 10:04 o'clock

Member: refLye
refLye May 18, 2012 at 06:26:58 (UTC)
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=
?
Member: moiko89
moiko89 May 18, 2012 at 07:26:33 (UTC)
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.
Member: Skyemugen
Skyemugen May 18, 2012 at 08:19:54 (UTC)
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é
Member: moiko89
moiko89 May 18, 2012 at 09:16:55 (UTC)
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
Member: bastla
bastla May 18, 2012 at 10:11:59 (UTC)
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
Member: moiko89
moiko89 May 18, 2012 at 10:45:04 (UTC)
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
Member: bastla
bastla May 18, 2012 at 12:10:46 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch May 19, 2012 updated at 13:02:17 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch May 20, 2012 at 22:27:11 (UTC)
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