Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Dynamische Anzahl Zeilen (Variablen) aus txt in Inputbox nutzen

Frage Entwicklung Batch & Shell

Mitglied: OKIDOKI

OKIDOKI (Level 1) - Jetzt verbinden

07.02.2013, aktualisiert 23:59 Uhr, 1981 Aufrufe, 6 Kommentare

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:

01.
 
02.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" Test.txt') do set "Variable%%i=%%j" 
03.
 
04.
 >%temp%\msgbox.vbs ECHO WScript.Echo InputBox("Administration Textdateien" ^& vbCrLf ^& _ 
05.
>>%temp%\msgbox.vbs ECHO    (variable1) ^& vbCrLf ^& _ 
06.
>>%temp%\msgbox.vbs ECHO    (variable2) ^& vbCrLf ^& _ 
07.
>>%temp%\msgbox.vbs ECHO    (variable3) ^& vbCrLf ^& _ 
08.
>>%temp%\msgbox.vbs ECHO    (variable1) ^& vbCrLf ^& _ 
09.
>>%temp%\msgbox.vbs ECHO    "" ^& vbCrLf ^& _ 
10.
>>%temp%\msgbox.vbs ECHO "Zum Editieren Dateiname eingeben:",  _ 
11.
>>%temp%\msgbox.vbs ECHO "TEST", _ 
12.
>>%temp%\msgbox.vbs ECHO "") 
13.
set "all-a=" 
14.
for /f "delims=" %%i in ('cscript //nologo %temp%\msgbox.vbs') do set "all-a=%%i" 
15.
DEL "%temp%\msgbox.vbs" 
16.
if defined all-a (GOTO :all-2) else (GOTO :all-3) 
17.
 
18.
:all-2 
19.
:: Zeile auslesen 
20.
set LineNo=%all-a% 
21.
set "line=" 
22.
set /a LineNo-=1 
23.
for /f %%a in ('more/e +%LineNo% ^< .\inhalte\liste.txt') do ( 
24.
  if not defined line set "line=%%a" 
25.
26.
exit 
27.
 
28.
:all-3 
29.
goto eof 
30.
 
Gruß OKIDOKI
Mitglied: bastla
08.02.2013, aktualisiert um 00:31 Uhr
Hallo OKIDOKI!

Eigentlich ist aus meiner Sicht der VBS-Teil unnötig, da Du ja einfach mit
findstr /n "^" Test.txt
oder, wenn Du eine andere Darstellung der Nummern haben möchtest, mit
find /v /n "::"<Test.txt
die Liste bequem auch in Batch erzeugen kannst (etwas opulenter gab's das auch schon mal hier) und außerdem hatten wir doch schon für eine ähnliche Thematik in 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
01.
L = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, vbNewline) 
02.
T = "Administration Textdateien" 
03.
For i = 0 To UBound(L) 
04.
    T = T & vbNewLine & i + 1 & vbTab & L(i) 
05.
Next 
06.
WScript.Echo InputBox(T & vbNewLine & "Zum Editieren Dateinummer eingeben:", "TEST")
Beim Aufruf des Scripts musst du dann die Datei als Parameter übergeben, also etwa:
for /f "delims=" %%i in ('cscript //nologo %temp%\msgbox.vbs Test.txt') do set "all-a=%%i"
Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
08.02.2013, aktualisiert um 17:37 Uhr
Hallo bastla,

vielen Dank schon mal für deine Hinweise. Ich denke, das habe ich von schon mal irgendwo gelesen, das Problem ist viel einfach als es dargestellt wird ... von mir

Die Thematik hatten wir schon mal, stimmt soweit. In diesem Fall ist es eigentlich nur schwierig für mich, die Datei als Variable in das vbs-Script zu laden. Mir ist nämlich nicht klar, wie dort die Variable definiert wird, es stürzt immer ab ;-(.
Also, Find-Geschichte ist klar, aber wie übernehme ich das Ganze ins vbs? (die ungetestete Sparvariante läuft noch nicht...)
@

Ich bestreite alles und behaupte das Gegenteil - Asche auf bastlas Haupt!!! Und danke für den Hinweis - ich habe es echt übersehen ----

Hier der damals erstellte und dann überarbeitete Zielcode:

01.
L=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile("%Liste%").ReadAll,vbCrLf):Max=UBound(L) 
02.
Ein=InputBox(Join(L,vbCrLf),"TEST"):If Not IsNumeric(Ein) Then Ein=0:End If:If CInt(Ein)^>Max Then Ein=0:End If:WScript.Echo CInt(Ein) 
03.
 
04.
for /f %%i in ('cscript //nologo %Input%') do set "Nr=%%i" 
05.
if %Nr%==0 goto :weiter 
06.
 
PS: Noch einmal zu deinem obigen Script: Wie lese ich denn die Datei ein? Also, wo ist die Variable?

Gruß OKIDOKI
Bitte warten ..
Mitglied: bastla
12.02.2013 um 23:51 Uhr
Hallo OKIDOKI!

Sorry - hatte Dein PS übersehen ...
Wie lese ich denn die Datei ein? Also, wo ist die Variable?
Variable hattest Du für "Test.txt" ja auch keine - daher wird beim Aufruf (siehe Beispielzeile oben) des VBScripts dieser Dateiname "hardcoded" übergeben.

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
13.02.2013 um 17:50 Uhr
Hallo bastla,

irgendwie verstehe ich deinen Kommentar so, dass die Variable erst nach der Eingabe übergeben wird. Mir ist nur nicht klar, woher die Werte (wie im unteren Fall %Liste%) herkommen: OpenTextFile ... ? Oder nutzt er die gar nicht, sondern erwartet eigentlich nur eine Eingabe?

Gruß OKIDOKI
Bitte warten ..
Mitglied: bastla
13.02.2013 um 21:04 Uhr
Hallo OKIDOKI!

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
Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
14.02.2013 um 14:26 Uhr
Hallo bastla,

super, danke für deine Erklärung!

Grüße OKIDOKI
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Zeilen in TXT mit Leerzeichen auf eine bestimmte Länge auffüllen (4)

Frage von stingray14k zum Thema Batch & Shell ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
gelöst TXT Datei bleibt nach Erstellung leer - woran liegt es? (14)

Frage von Komoran12 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Plattformdienst für unbekannte Geräte (7023)

Tipp von KMUlife zum Thema Windows 10 ...

Administrator.de Feedback

Umgangsformen auf der Seite

(7)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(11)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
Windows Server Komplettspiegelung (15)

Frage von pdiddo zum Thema Windows Server ...

Batch & Shell
gelöst Dir tc Befehl unter Windows 10 macht Probleme (14)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Windows Server 2016 RDS Remoteapp Anzeigefehler (11)

Frage von qlnGenius zum Thema Windows Server ...