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 Ordnerstruktur rekursiv auflisten

Mitglied: ismiregal

ismiregal (Level 1) - Jetzt verbinden

04.03.2007, aktualisiert 18:06 Uhr, 14848 Aufrufe, 5 Kommentare

Ziel:
Ausgehend von der Position der Batchdatei selbst sollen rekursiv alle Unterordner relativ aufgelistet werden. Nach einem Abgleich mit einer "negativliste.txt" soll die Ausgabe in eine "ausgabe.txt" geschrieben werden. Das Format ist zwingend "unterordner\unterunterordner".

Erst einmal ein "HALLO" an alle die sich die Mühe gemacht haben meinen 1. Beitrag anzukilcken! ;)

Da ich selbst kein Informatiker bin, und auch noch nicht wirklich mit den Untiefen der CMD Verkettungen, String Manipulationen usw. vertraut bin, hoffe ich auf Eure Unterstützung! Ich bin nähmlich schon beim Auflisten der relativen Pfade gescheitert! Aber schaut selbst:

Was habe ich schon versucht:

1. Versuch "DIR"

dir /s /a:d /b >ausgabe.txt

Schreibt schon einmal alle Unterverzeichnisse in die Ausgabedatei. Leider aber mit ABSOLUTEN Pfadangaben! Ich habe keinen Schalter gefunden der mir die RELATIVEN Pfadangaben ausgibt.

2. Versuch "FOR"

for /R /D %%f in (*.*) do (echo %%f)) >ausgabe.txt

Auch hier zunächst die Ausgabe mit ABSOLUTEN Pfadangaben. Da hier aber Variablen zum Einsatz kommen zielt der Versuch darauf ab die Ausgabe über Stringoperation(?) zu manipulieren.

In der "Befehlszeilenreferenz" sind unter "Verwenden von Batchparametern" etliche Erweiterungen benannt (kleiner Auszug):

%~d1 Erweitert %1 zu einem Laufwerkbuchstaben.
%~p1 Erweitert %1 zu einem Pfad.
%~n1 Erweitert %1 zu einem Dateinamen.
%~x1 Erweitert %1 zu einer Dateinamenerweiterung.

Leider auch hier keine Lösung für mein Problem mit den RELATIVEN Pfadangaben! ;(

Nach weiterem Suchen kommen weitere Möglichkeiten zu Tage --> Ersetzen und Indizieren von Strings:

%X:A=B% Sucht in Variable %X nach A und ersetzt es durch B.
%X:~A,B% (A und B sind Ganzzahlen) Sucht in Variable %X nach der Position (in) A und gibt von dort aus B Zeichen zurück.
%X:~A,-B% Wie zuvor nur wird B nicht von Position A aus sondern vom Ende der Variable %X aus gesetzt.

Soweit so gut, aber geht nicht (bei mir!?) wenn A und B wiederum Variablen sein sollen.
Geht auch nicht (bei mir!?) in Verbindung mit den Variablen im FOR Beispiel von oben.

Mein letzter Stand vor und Grund für diesem Beitrag --> meine Idee funktioniert NICHT

(for /R /D %%f in (*.*) do (echo %%f:%cd%=%)) >ausgabe.txt

Die Zeile sollte doch eigentlich die Verzeichnisse auflisten und die Variable %%f abzüglich des Batch Pfades ausgeben?

Also dann, jetzt seit Ihr gefragt! Bitte um ein "wenig" Details! Also so nicht einfach "mach so, dann gehts", sondern "mach es so, weil es dann aufgrund von ... funktioniert.

Gruß
ismiregal
Mitglied: onegasee59
04.03.2007 um 15:22 Uhr
Soweit so gut, aber geht nicht (bei mir!?) wenn A und B wiederum Variablen sein sollen.

Du muss Variablen natürlich auch immer als Variable definieren; Bsp:

für A
set A=irgendwas
echo "%A%"

für %~dp1 (Kombination von "%~d1" und "%~p1")
set pfad=%~dp1
::schreibe in die Datei "meine_log.txt" den Text "BEGINN - Login-Daten <aktuelles Datum> <aktuelle Zeit>"
echo BEGINN - Login-Daten %date% %time% > "%pfad%meine_log.txt"

onegase59
Bitte warten ..
Mitglied: bastla
04.03.2007 um 15:38 Uhr
Hallo ismiregal und willkommen im Forum!

aber geht nicht (bei mir!?) wenn A und B wiederum Variablen sein sollen.
Falls es Dir hilft:
01.
setlocal enabledelayedexpansion 
02.
... 
03.
... 
04.
echo %X:~!A!,!B!%
Und zu Deiner angestrebten Lösung:
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /R /D %%f in (*.*) do (set "Vz=%%f") & (echo !Vz:%cd%=!) > ausgabe.txt
Wenn Du dann noch "%cd%\" schreibst, bist Du auch den führenden "\" los.

Grüße
bastla
Bitte warten ..
Mitglied: ismiregal
04.03.2007 um 17:23 Uhr
Hi onegase59, Hi bastla,

die Reihenfolge ist KEINE Wertung! ;)

DANKE für eure schnellen Antworten!

@onegase59:

Die Variablen A und B habe ich mal direkt aus der Berfehszeilenreferenz übernommen. In meinem Script sollten diese dann wie gezeigt A=%cd% und B= (leer) zu setzen.
ABER - Was ist mit dem Rest? Das verstehe ich nicht wirklich? Hast Du dich da vertippt ;) oder wie kann ich das in mein "Problemscriptlein" einbauen?

@bastla:

Danke es funktioniert! (wenn ich noch >>ausgabe.txt schreibe oder den gesamten FOR befehl in Klammern setze ;) ) Und am besten ist: ich "denke" ICH habe verstanden warum! (die "verzögerte Umgebungsariablenerweiterung" wird benötigt um im FOR Befehl die Variable !Vz mit den Inhalt von %%F zu füllen!???)
Vieleich könntest Du mit deinen Erfahrungsschatz ja noch einmal kurz erklären warum, wann "setlocal enabledelayedexpansion" verwendet wird!?

Ich trau mich noch etwas zu Fragen, obwohl es eigentlich ein bischen der "Faulheit" geschultet ist:

Wie kann ich nun noch die ausgabe.txt mit einer negativlist.txt filtern?

Grüße
istmiregal

getreu Thaddäus Troll: "Faulheit ist der Humus des Geistes"
Bitte warten ..
Mitglied: bastla
04.03.2007 um 17:38 Uhr
Hallo ismiregal!

Zu "enabledelayedexpansion" findest Du hier im Forum jede Menge Info, daher nur ganz kurz:
Der "for"-Befehl wertet Variablen nur einmal (am Beginn aus) - ändern sich daher während des Ablaufens der "for"-Schleife Variablenwerte, wird die "delayedexpansion" benötigt, um die Aktualisierung der Variablen durchzuführen. Dies gilt auch für Variable, die bereits vor dem "for"-Befehl definiert wurden, deren Inhalt sich aber während des Ablaufs der Schleife ändert.

Soferne ich Dich richtig verstehe, enthält die "negativlist.txt" auszufilternde Verzeichnisse (je eines pro Zeile). In diesem Fall könntest Du es so versuchen:
01.
findstr /i /v /G:negativlist.txt ausgabe.txt > gefiltert.txt
Grüße
bastla
Bitte warten ..
Mitglied: ismiregal
04.03.2007 um 18:06 Uhr
DANKE bastla! Funktioniert und ich kann meine gewünschte Funktionen damit zusammenbauen.

ismiregal
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Alle Dateien rekursiv auflisten
gelöst Frage von 94451VB for Applications2 Kommentare

Hallo liebe Kollegen, ich suche nach einer Möglichkeit in VBS alle Dateien rekursiv aufzulisten hier habe ich eine Möglichkeit ...

Batch & Shell

Ordnerstruktur lesen, Dateien - Neue Ordnerstruktur

gelöst Frage von internet2107Batch & Shell7 Kommentare

Ich verzweifle etwas an folgender Sache. Ich habe eine vorgebene Ordnerstruktur, in der sich Dateien befinden. Diese Dateien sollen ...

Batch & Shell

Irfanviev rekursiv starten

gelöst Frage von Nightowl71Batch & Shell5 Kommentare

hallo zusammen, bisher habe ich diese befehlsfolge im freecommander genutzt Y:\IrfanView\i_view32.exe "D:\test /thumbs /filepattern="*001*"" (mit eingabe, das ich die ...

Rechtliche Fragen

Vernatwortlichkeit Ordnerstruktur

gelöst Frage von PeterzRechtliche Fragen5 Kommentare

Ich habe eine Frage zur Dateiablage innerhalb einer Firma. In der Regel werden jegliche Daten in einer Ordnerstruktur auf ...

Neue Wissensbeiträge
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 1 TagMicrosoft2 Kommentare

Server Betriebssysteme auf dem die verschiedenen Offices nicht supported sind: • Office 365 ist und wird nicht supported auf Windows ...

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 1 TagSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 1 TagSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 1 TagHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Apple
MacBook Pro 2018 mit 8 GB oder 16 GB
Frage von SysAdm81Apple25 Kommentare

Hallo zusammen, ich steh vor der Überlegung mir ein MacBook Pro 13 (2018) zu kaufen. Bzgl. SSD habe ich ...

Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen25 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...

Off Topic
SysAdmin im öffentlichen Dienst - jemand Erfahrungen?
Frage von JohnDorianOff Topic19 Kommentare

Hallo zusammen, hat jemand Erfahrung wie es so ist als SysAdmin im öffentlichen Dienst (Landkreis) im Südwesten der Republik ...

Datenbanken
MS SQL DB-Daten archivieren?
gelöst Frage von SchelinhoDatenbanken16 Kommentare

Hallo zusammen! Ich habe eine Anwendung, welche MSSQL (SQL Server 2014 SP2) nutzt. Auf der DB-Instanz laufen diverse Datenbanken. ...