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 Namen in variabel speichern und in einer zeile ausgeben

Mitglied: N4pst3r

N4pst3r (Level 1) - Jetzt verbinden

27.01.2011, aktualisiert 19:34 Uhr, 4682 Aufrufe, 6 Kommentare

eine txt-datei mit for-schleife auslesen, in einer variablen speichern und in EINER zeile ausgeben mit simikolon getrennt!

Hallo

Ich brauche dringend hilfe!
Ich soll noch ein batch-programm schreiben welches eine datei (nur namen) in einer variablen speichert und mit simikolon getrennt in EINER ZEILE ausgibt.
Bis morgen soll es fertig sein und ich komm einfach nicht weiter.
So versuche ich es:

for /f %%x in (test.txt) do (set %a=%a% %%x)
echo %a%

die txt-datei enthält namen wie:

.appletviewer
.JMCApp
.blablabla
.und
.so
.weiter

eigentlich sollte dann mit ausführung des batch-programms folgendes ausgegeben werden (und genau so):

.appletviewer;.JMCApp;.blablabla;.und;.so;.weiter

allerdings wird nur die letzte zeile ausgegeben und beim nochmaligen aufruf des batchs nochmals die letzte zeile angehängt sprich so:

ausführung1:
.weiter

ausführung2:
.weiter .weiter

ausführung3:
.weiter .weiter .weiter

usw

danke schonmal
gruß N4pst3r
Mitglied: Biber
27.01.2011 um 20:03 Uhr
Moin N4pst3r,

willkommen im Forum.
angenommen, dich hätte es zu Günther Johannes Jauch verschlagen und es stünden für die 32000-Taler-Frage
nach dem Fifty-Fifty-Joker nur noch folgende Antworten zur Auswahl:

"Wenn Sie keine Grundkenntnisse von Batchzusammenbraterei hätten, dann sollten Sie..."
A - Mal bei Gelegenheit Fünf-Zeichenfolgen wie DIR/?, FOR/? oder SET /? am CMD-Prompt eingeben
C - Sich mit einem Nick wie "N4pst3r" in einem IT-Erwachsenen-Forum anmelden und um 19:20h sagen "ich brauch dringend bis morgen"

WTF kommst du auf Lösung C????

Ob das richtig war, erfahren Sie nach der Werbung...

Grüße
Biber
Bitte warten ..
Mitglied: N4pst3r
27.01.2011 um 20:18 Uhr
danke und entschuldige...
das ist nunmal die situation...
1. ja ich bewege mich im ms-dos so ziemlich das erste mal (ich programmiere ausschließlich java)
2. dieser name hat für mich eine gewisse bedeutung und sollte niemanden auf irgendwelche sonstigen schlüsse außer das ich mich so nenne bringen
3. okay... ich dachte es ist nicht schwer zu lösen nur für mich stellt es ein riesen problem da... auch weil diese arbeit für dritte wichtig ist
Bitte warten ..
Mitglied: Biber
27.01.2011 um 20:57 Uhr
Moin N4pst3r,

na gut...der l33t-Nickname war auch nur das i-Tüpfelchen.
Schwerer im Magen liegt mir das, was du in Punkt drei versuchst zu entkräften...
Gerade wenn "es nicht schwer zu lösen ist" , dann wäre eigentlich das erhoffte Verhalten,
  • sich einmal bei den o.a. Elementarbefehlen etwas schlauer zu lesen
  • eventuell mal so ein, zwei Beiträge über Rumalbern mit FOR/F-Anweisungen hier im Forum querzulesen
  • und auch mal solche abgelutschten Notnägel wie "Forumssuche" oder "Suchmaschinenbefragung" anzutesten.

Andererseits...
Was soll ich hier jeden gatesverdammten Tach gegen die rauschende Brandung ansingen...?

Mein proof-of-concept am CMD-Prompt wäre dieser hier
(For /f %i in ('dir /b /a:d') do @set "alldirs=!alldirs!;%i" ) & for /f "delims=!; tokens=2*" %i in ('set alldirs') do set alldirs=%j
--> dieser würde bei mir, bei drei vorhandenden Unterverzeichnissen die Variable %alldirs% so setzen:
set alldirs=$home;$logs;logs
Bei mir ist der CMD standardmäßig mit DelayedExpansion gestartet, du kannst das Ergebnis reproduzieren,
wenn du an deinem CMD-Prompt eine neue Instanz der Cmd.exe öffnest mit "cmd /V:on /k" (siehe "Cmd/?")

Von der Mimik ist nur erhaltenswert in einem Batch:
  • außen herum (ganz links beginnend) ist eine FOR /F-Anweisung.
  • Die holt von einer DIR-Anweisung nur die Unterverzeichnisse und mit Parameter /b relativ schnörkellos. Siehe DIR /? . Das Ergebnis entspricht formal deiner "test.txt".
  • damit wird gesetzt die Variable %alldirs% und zwar deren !aktuellster_berechenbarer_Wert! plus der nächste Token %i =verzeichnisname
  • da beim ersten Mal noch keine Variable !alldirs! vorhanden ist, sieht die gesetze Variable %alldirs% dann so aus
 set alldirs=!alldirs!;$home;$logs;logs
  • dieses "!alldirs!;" am Beginn der Liste schneide ich mit der rechtesten FOR/F-Anweisung wieder weg.

Soweit die Skizze, die dir alle nötigen nuts and bolts griffbereit hinlegt.

In einem Batch muss jede Schleifenvariable %i als %%i geschrieben werden - mehr sollte nicht an Info nötig sein.

Wenn du nicht weiter kommst, melde dich.

Grüße
Biber
Bitte warten ..
Mitglied: pieh-ejdsch
27.01.2011 um 21:00 Uhr
moin,

das mit der lösung C ist weil in der Batch die schönste Zeile Überhaupt fehlt
setlocal
näheres gib es dazu bei Wie Arbeite ich mit Batch UmgebungsVariablen? Erstellung Umgang Erweiterungen Veränderungen
Die CMD ist offen und der Batch wird ausgefüht. In die Variable a wird die letzte Zeile geschrieben.
wird der Batch nochmal ausgeführt wird in die Variable a der Inhalt der Variable a und die Letzte Zeile geschrieben. usw...

das eine Prozentzeichen nach dem set ist Überflüssig es wird im Batch nicht aufgelöst. Das kommt aber nur daher, weil es eine Variable "a=" nicht geben kann. wenn das = nicht wäre würde versucht werden die Variable a aufzulösen.

auf drei wegen kommst Du zu Deiner gesamtZeilen-Zeile:
in einer Forschleife kannst Du nicht mit Einfacher Darstellung der Variable diese ständig Verändern. Dazu musst Du entweder die Variable in einem
Call set "Variable=%%Variable%%%%x;"
neusetzen oder vor/in der Schleife "setlocal enabledelayedexpansion" benutzen
  • in der Forschleife angeschalten muss es auch in der Forschleife wieder ausgeschalten werden, was eine Verschachtelte Forschleife vorraussetzt, welche die !UmgebungsVariable! in dieser an eine ForVariable gibt und vor dem neusetzen der UmgebungsVariable mit zuhilfename der Forvariable, das entsprechende "endlocal" eingestreut wird.

Gruß Phil
Bitte warten ..
Mitglied: N4pst3r
27.01.2011 um 21:32 Uhr
Hi

Ich danke vielmals.
Über For-Schleifen habe ich mich schon informiert. for /? habe ich ebenfalls schon zuvor aufgerufen, mich im Internet umgesehen und bin auch öfters auf diese Seite gestoßen. Ich fand Eure Beiträge sehr schlüssig deswegen habe ich mich hier auf die schnelle gemeldet.
Ich werde mich denn nun noch über die neuen von Euch genannten Begriffe informieren und hoffentlich meine Batch beenden. Mal schauen wo's mich hinführt.
Nochmals danke ++
Bitte warten ..
Mitglied: Skyemugen
27.01.2011 um 21:41 Uhr
Aloha Biber,

[OT]
auch wenn das heute schon der dritte Offtopic-Beitrag von mir ist aber ...

*lmfao* Ich hab mich weggeschmissen vor Lachen, einfach klasse (Lösung C) - du hast heute irgendwie deinen crazy-day, oder? Fiel mir vorhin schon auf. ;)

Ob ich jetzt noch ruhig zum Einschlafen komme, mit dem Spruch die ganze Zeit im Hinterkopf *lach* ...
[/OT]

lachende Grüße

André
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Pfad in Variabel speichern und ausgeben Batch

Frage von miichiii9Batch & Shell7 Kommentare

Hallo miteinander Ich wollte ein Befehl in deiner Variabel speichern und dann in einer if schleife (Wenn Bedingung erfüllt) ...

Ubuntu

Sed, 4. zeile nach regexp ausgeben

Frage von rsadmchefUbuntu1 Kommentar

Hallo Team, Mein System ist Lubuntu 14.04 LTS Ich benötige ein wenig sed - Hilfe. Meine zu bearbeitende Datei ...

Batch & Shell

Batch: Bestimmte Zeile in Textdatein ausgeben?

gelöst Frage von TaubeTecIncBatch & Shell4 Kommentare

Guten Tag, so habe ich ein Programm und 2 Dateien. Das Programm soll in der Datei1 ein bestimmtes wort ...

Batch & Shell

Jede Zeile einer Textdatei in eigene Variable speichern

Frage von tomaschkuBatch & Shell4 Kommentare

Hallo erstmal, Da ich keine passende Antwort auf meine Frage gefunden habe, will ich es hier versuchen. Als Beispiel: ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 14 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 20 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 23 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 2 TagenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...