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, 1966 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei (6)

Frage von donnyS73lb zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell: Variablen aus .txt Dateien heraus ausgeben (5)

Frage von Tobiased zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...