Txt datei veränden - "steuerung" für VirtualBox
Hallo zusammen!
Möchte eine .bat schreiben mit der ich meine VM´s steuern kann.
Hab es schon geschafft die Liste der verfügbaren vm´s in eine .txt
zu bekommen.
Das sieht dann so aus:
"OwnCloud"
"Mail"
"Webs"
"SeaNAS"
"Seafile"
"Insurgency"
"UB-0001"
"TL-0002"
usw..
Nun möchte ich das die Einträge Nummerriert angezeit werden also müsste die .txt dann so aussehen:
1 = "OwnCloud"
2 = "Mail"
3 = "Webs"
4 = "SeaNAS"
5 = "Seafile"
6 = "Insurgency"
7 = "UB-0001"
8 = "TL-0002"
usw..
Weiters müssten dann alle Einträge in der Form "Owncloud" ohne " und ohne 1 = einer Variablen übergeben werden
Also
VM1 = Owncloud
VM2 = Mail
usw...
Ziel soll es sein das der Benutzer mittels Tasten von 1 bis ... die zu ändernde VM auswählen kann.
Weitere Herausforderung - Die Anzahl der VM´s Bleibt nicht gleich!
Besten dank schonmal!
Mfg.
Markus
Möchte eine .bat schreiben mit der ich meine VM´s steuern kann.
Hab es schon geschafft die Liste der verfügbaren vm´s in eine .txt
zu bekommen.
Das sieht dann so aus:
"OwnCloud"
"Mail"
"Webs"
"SeaNAS"
"Seafile"
"Insurgency"
"UB-0001"
"TL-0002"
usw..
Nun möchte ich das die Einträge Nummerriert angezeit werden also müsste die .txt dann so aussehen:
1 = "OwnCloud"
2 = "Mail"
3 = "Webs"
4 = "SeaNAS"
5 = "Seafile"
6 = "Insurgency"
7 = "UB-0001"
8 = "TL-0002"
usw..
Weiters müssten dann alle Einträge in der Form "Owncloud" ohne " und ohne 1 = einer Variablen übergeben werden
Also
VM1 = Owncloud
VM2 = Mail
usw...
Ziel soll es sein das der Benutzer mittels Tasten von 1 bis ... die zu ändernde VM auswählen kann.
Weitere Herausforderung - Die Anzahl der VM´s Bleibt nicht gleich!
Besten dank schonmal!
Mfg.
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 270431
Url: https://administrator.de/contentid/270431
Ausgedruckt am: 24.11.2024 um 09:11 Uhr
7 Kommentare
Neuester Kommentar
Moin Markus,
z.B. direkt als Auswahlmenü ohne Änderung der Textdatei ...
Gruß jodel32
z.B. direkt als Auswahlmenü ohne Änderung der Textdatei ...
@echo off & setlocal enabledelayedexpansion
Set "vmfile=c:\vms.txt"
Set /a cnt=0
echo Bitte VM selektieren
echo.
for /f "usebackq delims=" %%a in ("%vmfile%") DO @(
set /a cnt+=1
set "VM!cnt!=%%~a"
echo [!cnt!] - %%~a
)
echo.
set /p answer=Ihre Auswahl [1-!cnt!]:
if %answer% LEQ !cnt! echo Sie haben die VM mit Namen '!VM%answer%!' gewählt
Hallo Markus,
wozu die Datei mit den VM-Namen mit Nummern verhunzen? So ein Auswahlmenü kann man auch komplett dynamisch programmieren:
Gruß
Friemler
wozu die Datei mit den VM-Namen mit Nummern verhunzen? So ein Auswahlmenü kann man auch komplett dynamisch programmieren:
@echo off & setlocal
set "InFile=.\VMs.txt"
:InputLoop
cls
set "ItemNo=1"
for /f "usebackq delims=" %%l in ("%InFile%") do (
call :PrintItem "%%l"
)
echo.
set "Selected="
set /p "Selected=Wählen Sie eine VM aus (Enter für Abbruch) "
if "%Selected%" equ "" goto :Quit
set "ItemNo=1"
for /f "usebackq delims=" %%l in ("%InFile%") do (
set "VMName=%%l"
call :FindItem "%Selected%" && goto :Action
)
echo.
echo Bitte geben Sie eine der angezeigten Nummern ein.
pause
goto :InputLoop
:Action
echo.
echo Ausgewählte VM: %VMName%
:Quit
echo.
exit /b 0
::****************************************************************
:: Unterprogramme
::****************************************************************
:PrintItem
echo %ItemNo% - %~1
set /a ItemNo+=1
exit /b 0
:FindItem
if "%ItemNo%" equ "%~1" exit /b 0
set /a ItemNo+=1
exit /b 1
Gruß
Friemler
Zitat von @AngryDad:
Bekomme jetzt in die Variable !VM%answer%! z.B. OwnCloud"
Da muss noch das Anführungszeichen am Ende weg, sonst kann ich die Variable im weiteren Verlauf nicht verwenden.
Das wird in der Batch bereits in dieser Zeile mit der Tilde in der Laufvariablen gemachtBekomme jetzt in die Variable !VM%answer%! z.B. OwnCloud"
Da muss noch das Anführungszeichen am Ende weg, sonst kann ich die Variable im weiteren Verlauf nicht verwenden.
set "VM!cnt!=%%~a"
"OwnCloud"
"Mail"
"Webs"
Vermutlich hast du da keine richtigen Anführungszeichen am Ende, überprüfe die ASCII Codes.
Gruß jodel32
Zitat von @AngryDad:
for /F "tokens=1*" %%a in (Temp.txt) do echo %%a >> Temp1.txt
Wird dann warscheinlich an dem Leerzeichen liegen......
jup, lass das Leerzeichen vor der Ausgabeumleitung weg dann klappts auch:for /F "tokens=1*" %%a in (Temp.txt) do echo %%a >> Temp1.txt
Wird dann warscheinlich an dem Leerzeichen liegen......
for /F "tokens=1*" %%a in (Temp.txt) do echo %%a>> Temp1.txt
@echo off & setlocal enabledelayedexpansion
Set /a cnt=0
echo Bitte VM selektieren
echo.
for /f delims^=^"^ tokens^=1 %%a in ('"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list vms') DO @(
set /a cnt+=1
set "VM!cnt!=%%~a"
echo [!cnt!] - %%~a
)
echo.
set /p answer=Ihre Auswahl [1-!cnt!]:
if %answer% LEQ !cnt! echo Sie haben die VM mit Namen '!VM%answer%!' gewählt