Dynamische Anzahl Zeilen (Variablen) aus txt in Inputbox nutzen
Nach langer Zeit mal wieder eine Frage ... die Zwischenzeit habe ich immer noch mit dem Auswerten der Kommentare aus diesem Forum verbracht - weil sie alle super hilfreich waren!
Jetzt zu meinem Problem:
Ich möchte gerne eine Liste auslesen, um mit einer Auswahl daraus ein Programm zu starten. Die Liste soll aber dynamisch sein und die Variablen in in einer Inputbox angezeigt werden.
Was ich schon habe:
Meine Liste wird ausgelesen und jede Zeile in eine Variable gepackt.
In einer Inputbox wird die Eingabe ausgewertet und weiter verarbeitet.
Was mir fehlt:
Die Variablen sollen innerhalb der Inputbox angezeigt werden (als Auswahl, aber dynamische Anzahl der Variablen)
Hier mein bisheriger Versuch:
Gruß OKIDOKI
Jetzt zu meinem Problem:
Ich möchte gerne eine Liste auslesen, um mit einer Auswahl daraus ein Programm zu starten. Die Liste soll aber dynamisch sein und die Variablen in in einer Inputbox angezeigt werden.
Was ich schon habe:
Meine Liste wird ausgelesen und jede Zeile in eine Variable gepackt.
In einer Inputbox wird die Eingabe ausgewertet und weiter verarbeitet.
Was mir fehlt:
Die Variablen sollen innerhalb der Inputbox angezeigt werden (als Auswahl, aber dynamische Anzahl der Variablen)
Hier mein bisheriger Versuch:
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" Test.txt') do set "Variable%%i=%%j"
>%temp%\msgbox.vbs ECHO WScript.Echo InputBox("Administration Textdateien" ^& vbCrLf ^& _
>>%temp%\msgbox.vbs ECHO (variable1) ^& vbCrLf ^& _
>>%temp%\msgbox.vbs ECHO (variable2) ^& vbCrLf ^& _
>>%temp%\msgbox.vbs ECHO (variable3) ^& vbCrLf ^& _
>>%temp%\msgbox.vbs ECHO (variable1) ^& vbCrLf ^& _
>>%temp%\msgbox.vbs ECHO "" ^& vbCrLf ^& _
>>%temp%\msgbox.vbs ECHO "Zum Editieren Dateiname eingeben:", _
>>%temp%\msgbox.vbs ECHO "TEST", _
>>%temp%\msgbox.vbs ECHO "")
set "all-a="
for /f "delims=" %%i in ('cscript //nologo %temp%\msgbox.vbs') do set "all-a=%%i"
DEL "%temp%\msgbox.vbs"
if defined all-a (GOTO :all-2) else (GOTO :all-3)
:all-2
:: Zeile auslesen
set LineNo=%all-a%
set "line="
set /a LineNo-=1
for /f %%a in ('more/e +%LineNo% ^< .\inhalte\liste.txt') do (
if not defined line set "line=%%a"
)
exit
:all-3
goto eof
Gruß OKIDOKI
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201428
Url: https://administrator.de/forum/dynamische-anzahl-zeilen-variablen-aus-txt-in-inputbox-nutzen-201428.html
Ausgedruckt am: 22.12.2024 um 18:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo OKIDOKI!
Eigentlich ist aus meiner Sicht der VBS-Teil unnötig, da Du ja einfach mit
oder, wenn Du eine andere Darstellung der Nummern haben möchtest, mit
die Liste bequem auch in Batch erzeugen kannst (etwas opulenter gab's das auch schon mal diesem Thread einen Ansatz erarbeitet ...
... anyhow: Wenn Du VBS verwenden willst, dann lies die Liste direkt im Script ein - (ungetestet und in der Sparvariante) etwa per
Beim Aufruf des Scripts musst du dann die Datei als Parameter übergeben, also etwa:
Grüße
bastla
Eigentlich ist aus meiner Sicht der VBS-Teil unnötig, da Du ja einfach mit
findstr /n "^" Test.txt
find /v /n "::"<Test.txt
... anyhow: Wenn Du VBS verwenden willst, dann lies die Liste direkt im Script ein - (ungetestet und in der Sparvariante) etwa per
L = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, vbNewline)
T = "Administration Textdateien"
For i = 0 To UBound(L)
T = T & vbNewLine & i + 1 & vbTab & L(i)
Next
WScript.Echo InputBox(T & vbNewLine & "Zum Editieren Dateinummer eingeben:", "TEST")
for /f "delims=" %%i in ('cscript //nologo %temp%\msgbox.vbs Test.txt') do set "all-a=%%i"
bastla
Hallo OKIDOKI!
Im "unteren" Fall muss es tatsächlich eine Batchvariable "
Grüße
bastla
Im "unteren" Fall muss es tatsächlich eine Batchvariable "
%Liste%
" geben, da diese während der Script-Erstellung schon fest in den Code integriert wird. Im "oberen" Beispiel verwendet das Script (per "WScript.Arguments(0)
") einen Übergabeparameter - daher auch der Scriptaufruf in der Form%temp%\msgbox.vbs Test.txt
bastla