Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: OKIDOKI

OKIDOKI (Level 1) - Jetzt verbinden

07.02.2013, aktualisiert 23:59 Uhr, 2006 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

1 Token aus einer TXT auslesen für jede Zeile und als Variable in Schleife nutzen

Frage von KriegstreiberBatch & Shell5 Kommentare

Die Beschreibung wird schwer was ich vorhabe. Ich versuchs mal zu erklären. Im Vorfeld ein Auszug der Textdatei: Ich ...

PHP

TXT Datei auslesen und bestimmte Zeilen in Variable setzen

gelöst Frage von 126594PHP11 Kommentare

Hallo zusammen, vorweg muss ich sagen, ich bin (bis jetzt) absoluter Neuling was PHP angeht. Ich will aus einer ...

Batch & Shell

Batch - Bestimmter Inhalt einer Zeile aus einer txt oder ini als Variable

gelöst Frage von element22Batch & Shell2 Kommentare

Hallo zusammen, leider finde ich den Fehler nicht. Na gut, vielleicht sitzt er vorm Monitor, aber das ist etwas ...

VB for Applications

Zeilen dynamisch ausblenden

gelöst Frage von TollgemachtVB for Applications10 Kommentare

Hallo Admins! Ich habe hier eine Liste, und komme nicht weiter, vielleicht kann mir ja jemand von euch helfen? ...

Neue Wissensbeiträge
Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 18 MinutenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 12 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 14 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 14 StundenMicrosoft8 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1026 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server14 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...