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

Nummerierte Menu dynamisch erzeugen

Frage Entwicklung Batch & Shell

Mitglied: ronenya

ronenya (Level 1) - Jetzt verbinden

04.07.2008, aktualisiert 18.10.2012, 4294 Aufrufe, 9 Kommentare

Hi,

Ich habe schon viele Beiträge gelsen aber finde nicht den richtige Lösung. Unten ist der Teil das Skript was ich nicht programmieren kann.

Ich suche test scripts(*.tst) in das Verzeichnis(dirpath) und die möchte den user nummeriert als menu zum Auswahl auflisten. Dabei versuche ich wie man unten sieht die gefundene in eine Art liste zu speichern, aber gleich hier scheitert mein Versuch. Any help ?

set script=
set scripts=
for /F "delims=" %%i in ('dir %dirpath%\*.tst /b 2^>nul') do @set scriptslist=(%scriptslist% %%i) & @set /a sum=sum+1 >nul

for %%script in %scripts% do (
echo %%script
)
Mitglied: bastla
04.07.2008 um 18:40 Uhr
Hallo ronenya und willkommen im Forum!

Vorweg einige Fragen:
  • Wie viele .tst-Dateien werden es im Maximalfall sein?
  • Wie oft ändert sich die Anzahl dieser Dateien?
  • Was soll nach der Auflistung konkret passieren?

Das Auslesen und Auflisten selbst könnte etwa so gehen:
01.
@echo off & setlocal enabledelayedexpansion  
02.
set "dirpath=D:\Test" 
03.
set "Ext=.tst" 
04.
 
05.
set /a Anzahl=0  
06.
for /f "delims=" %%i in ('dir /b "%dirpath%\*%Ext%" 2^>nul') do call :ProcessFile "%%i" 
07.
if %Anzahl% EQU 0 goto :eof 
08.
for /L %%i in (1,1,%Anzahl%) do echo %%i_!Script%%i! 
09.
:: 
10.
:: Weitere Verarbeitung 
11.
:: 
12.
goto :eof 
13.
 
14.
:ProcessFile 
15.
set /a Anzahl+=1  
16.
set "Script%Anzahl%=%~1" 
17.
goto :eof
Natürlich fehlt noch eine Formatierung der Ausgabe, außerdem könnte eine Sortierung ein Thema sein, ...

Bei dieser Version wird ein "Variablenarray" erzeugt, was die weitere Verwendung erleichtert.

[Edit]
Die Verwendung des Unterprogrammes ":ProcessFile" ist nicht unbedingt erforderlich - da ohnehin schon "delayedExpansion" verwendet wird, genügte auch folgendes "for" als Alternative zur Zeile 6:
01.
for /f "delims=" %%i in ('dir /b "%dirpath%\*%Ext%" 2^>nul') do ( 
02.
    set /a Anzahl+=1 
03.
    set "Script!Anzahl!=%%~i" 
04.
)
[/Edit]
Nur als Anmerkung: Eine "billige" Alternative könnte so aussehen:
01.
>Liste.txt dir /b "%dirpath%\*.tst"|findstr /n .
Grüße
bastla
Bitte warten ..
Mitglied: 1bgks6
05.07.2008 um 03:05 Uhr
help set
help cmd -> /V:ON
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

Und je nach Betriebssystem/Version/Updatezustand hast Du gewisse Chancen, daß auch
»set scripts=!scripts! %%i«
nicht zum Funktionieren zu bewegen ist, geschweige denn
»set /a sum=!sum!+1«.

Wenn, dann würde Dir allerdings auch ein
for /F %%s in (%scripts%) do echo %%s
nicht dabei helfen, den String %scripts% in Zeilen zu zerlegen. Du hast hier mit Relikten des DISK Operating Systems zu tun, nicht Pipe OS oder RAM OS

Also DISKen wir:

set FL=%TMP%\FL.%RANDOM%.txt
set sum=0
for /f %%s in ('dir %dirpath%\*.tst /b 2^>nul') do (
set /a sum=!sum!+1
echo !sum! %%s >>%FL%
)
::for /f %%s in (%FL%) do echo %%s
type %FL%
:cleanexit
del %FL%
Bitte warten ..
Mitglied: miniversum
05.07.2008 um 10:21 Uhr
Vielleicht verstehe ich ja jetzt falsch was du möchtest, aber würde da nicht ein einfaches
01.
dir %dirpath%\*.tst /b 2^>nul|findstr /N ^.*
reichen?

Wenn die unterschiedlichen Farben stören dann halt:
01.
for /F "delims=" %%i in ('dir %dirpath%\*.tst /b 2^>nul|findstr /N ^.*') do echo %%i
Und wenn dann noch die Trennzeichen halt kein ":" sondern was anderes sein sollen dann:
01.
for /F "tokens=1* delims=:" %%i in ('dir %dirpath%\*.tst /b 2^>nul|findstr /N ^.*') do echo %%i %%j
Bitte warten ..
Mitglied: Biber
05.07.2008 um 17:49 Uhr
@miniversum
Fussnote:
Wenn die unterschiedlichen Farben stören...
....dann ginge auch alternativ find.exe statt findstr.exe

Grüße
Biber
Bitte warten ..
Mitglied: ronenya
05.07.2008 um 22:06 Uhr
danke. die Losüng über tmp datei ist gut, aber es kann sich an mehrere hunderete Scripts handeln und in der Tat kann vieleicht länger dauern. Übrigens was macht die :: vor dem for genau?
Bitte warten ..
Mitglied: ronenya
05.07.2008 um 22:11 Uhr
nein hast du richthig verstanden und über findstr /N ist wirklich genial einfach.
Bitte warten ..
Mitglied: ronenya
05.07.2008 um 22:39 Uhr
Hi miniversum, die Lösungen reicht leider nicht um danach die Eingabe(Scriptnummer) der Benutzer, welche der nummerierte angezeigte Scripte ausgeführt werden soll? mit den 2&3 Vorschläge hat mein (XP sp2) Command Interpreter schon wieder eine von seine sehr hilfreiche Kommentare ausgegeben: "|" ist syntaktisch an dieser Stelle nicht verarbeitbar. Ich verstehe nicht was er will, weil
01.
 'dir %dirpath%\*.tst /b 2^>nul|findstr /N ^.*' 
is der gleiche Expression wie in der erste Vorschlag und ein pipe in Klammer haben viele andere schon benutzt. Anyway, die Scripts Namen in an Array scheint unverzichtbar für das spätere ausführen nach der Usereingabe.
Bitte warten ..
Mitglied: bastla
05.07.2008, aktualisiert 18.10.2012
Hallo ronenya!

Sieh Dir einmal diesen Thread an - dort hatten wir bereits Ähnliches ...

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
06.07.2008 um 10:06 Uhr
War ein Fehler von mir. Innerhalb von For musst du das | duch ein ^| ersetzen.
Das ganzw würde dann z.B. zu gehen:
01.
@echo off 
02.
echo Dateien die zur Wahl stehen: 
03.
for /F "tokens=1* delims=:" %%i in ('dir %dirpath%\*.tst /b 2^>nul^|findstr /N ^.*') do echo %%i %%j 
04.
set /p "wahl=Bitte Auswahl treffen: " 
05.
set "skipt=" 
06.
if %wahl% neq 1 set "skipt=skip=%wahl% " 
07.
set "auswahl=" 
08.
for /F "%skipt%delims=" %%i in ('dir %dirpath%\*.tst /b 2^>nul') do if not defined auswahl set "auswahl=%%i" 
09.
echo Auswahl: %auswahl%
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Aus ergebnissen ein Dynamisches Menü basteln
Frage von mguenth83Batch & Shell1 Kommentar

Hi, hab noch keine kurze Frage Wie kann ich aus einem Ergebnis einer Variable ein dynamisches Menü machen ? ...

Datenbanken
Dynamische Tabelle mit php erzeugen, leider leere anzeige obwohl datenbankeintrag besteht!
gelöst Frage von LordKimahriDatenbanken14 Kommentare

Also ich versuche derzeit eine art Pinnwand selbst zu kreieren, stolpere aber über das erzeugen einer dynamischen tabelle! Mein ...

Batch & Shell
Nummerierte dateien lücke finden .batch
Frage von franky89Batch & Shell2 Kommentare

hallo zusammen :) ich habe eine Vielzahl an Dateien mit Messwerten die folgender maßen aussehen: xxxx0001_000.txt xxxx0002_000.txt xxxx0003_000.txt xxxx0004_000.txt ...

Batch & Shell
Zeilen aus Datei auf einem Netzwerkspeicher einlesen und NUMMERIERT auflisten in BATCH
gelöst Frage von Fabian-HaasBatch & Shell10 Kommentare

Hallo, Ich möchte mithilfe einer Batchdatei verschiedene Netzwerkfreigaben eines Benutzers nummeriert auflisten. Diese sind in einer Datei auf dem ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...