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

Verzeichnisse auslesen und vergleichen

Frage Entwicklung Batch & Shell

Mitglied: HansMeier4

HansMeier4 (Level 1) - Jetzt verbinden

09.10.2012, aktualisiert 10.10.2012, 3049 Aufrufe, 5 Kommentare

Hallo Zusammen,
Ich arbeite an einer Batch mit der ich Unterverzeichnisse auslesen und auf mögliche Doppelungen vergleichen will.
Die möglichen Doppelungen sollen einfach als Echo ausgegeben werden.

Ich bin Batch-Neuling, aber doch recht begeistert von den Möglichkeiten die einem da geboten werden. Die einfachen Copy und Move Befehle bekomme ich schon recht gut hin, aber sobald es um Schleifen geht, beginne ich zu schwanken. Mein aktuelles Problem habe ich bereits im Vorwort erläutert. Ich wäre froh, wenn mir da einer auf die Sprünge helfen könnte.

Die Verzeichnisstruktur sieht folgendermaßen aus:
A
B
Bauer
Bauer Klaus
Beier
Behrens
C
D
.
.
.

Ziel ist es die Ordner A-Z zu öffnen und die darin liegenden Verzeichnisse nach beispielsweise den ersten 3 Buchstaben zu prüfen.
Im obrigen Beispiel wäre die Ausgabe dann:
Mögliche Doppelung:
Bauer - Bauer Klaus
Mein erster Ansatz war es das Ganze über 'dir' aufzusetzen. Leider bekomme ich das mit dem 'exclude' nicht wirklich hin. Der Dir-Befehl scheint ja keine Ausklammerungen zu erlauben.
Ab Zeile 21 bin ich irgendiwe ratlos.


01.
:BESTANDSKONTROLLE 
02.
set anfangsbuchstabe=A 
03.
set exclude=0 
04.
set zielverz=test 
05.
 
06.
:start 
07.
cd\ 
08.
d: 
09.
cd %zielverz%\%anfangsbuchstabe% 
10.
For /F %%i in ('dir /B /O:-N * ^2^>nul') do set erste=%%i 
11.
GOTO STARTZWEI 
12.
 
13.
:STARTZWEI 
14.
set suchstrg=%erste:~0,3% 
15.
For /F %%i in ('dir /B /O:N %suchstrg%* ^2^>nul') do set zweite=%%i 
16.
if x%zweite%==x GOTO FEHLER 
17.
if %zweite%==%erste% GOTO VGLFORTSETZEN 
18.
echo %erste% --- %zweite% 
19.
goto VGLFORTSETZEN 
20.
 
21.
:VGLFORTSETZEN 
22.
set exclude=%erste% 
23.
dir /b /O:-N "%~1" | findstr /v /i "\<%exclude%\>" do set erste  
24.
if "%~1" neq "" goto VGLFORTSETZEN
Ich würde mich über etwas Hilfe freuen.

Beste Grüße
Der Hans
Mitglied: 60730
10.10.2012, aktualisiert um 10:09 Uhr
moin,

Ab Zeile 21 bin ich irgendiwe ratlos.
Du glücklicher, bei mir ist schon bei Zeile 10 ein Rad los, bzw. mir fehlt was zwischen 11 und zwölf

sollte das nicht igendwie so aussehen?

do (
set erste=%%i
call :STARTZWEI
)
goto shell

anyway...

Mein aktuelles Problem habe ich bereits im Vorwort erläutert.

Nicht wirklich, du hast ne struktur, da steht irgendwo müller drin und willst alles abefrühstücken, ob da nochmal müller oder müh drin ist?
Bitte warten ..
Mitglied: HansMeier4
10.10.2012, aktualisiert 11.10.2012
Hallo,

Deine Vermutung ist vollkommen richtig.
Ich möchte aus müller das mül auslesen und schauen ob es noch ein Wort mit diesen Anfangsbuchstaben gibt.

Leider sind mir im Code noch einige Nachlässigkeitsfehler unterlaufen.
Sory für die Sauerei.
- in zeile 15 müßte es 'suchstrg' heißen
- in zeile 17 fehlt ein % hinter 'zweite'


Aber meine Intention war es einmal mit dem dir-befehl von unten nach oben durchzugehen und das erste Verzeichnis %erste% abzuholen.
Dann von oben nach unten mit dem Filter %suchstrg% durchzuwandern und schauen was ich finde. --> %zweite%
Wenn %erste% und %zweite% gleich sind, will ich zum nächsten Verzeichnis :vglfortsetzen
Wenn %erste% und %zweite% nicht gleich sind, haben sie dennoch die selben Anfangsbuchstaben --> echo %erste% und %zweite% --> dann :vglfortsetzen

Und genau da liegt grade mein Problem.
Ich weiß noch nicht, wie ich mit dieser Vorgehensweise einmal erkannte Verzeichnisse aus der Suche ausschließen kann.

Besten Dank für Dein Bemühen
Bitte warten ..
Mitglied: pieh-ejdsch
10.10.2012, aktualisiert um 23:21 Uhr
moin HansMeier4,

bei dir hat /b vorrang vor /w - also ist /w nutzlos.

Eine Anleitung für For ist hier auch zu finden, genauso wie eine Anleitung für Variablen.

Die For-Schleife mit der Option /d gibt Dir die Verzeichnisse auch sortiert aus.
Pack die Laufvariable in eine neueVariable.
Prüfe mit der altenVaraible(erste3) gegen neueVariable(erste3) - wenn gleich dann Ausgabe der Laufvariable.
Setze die Laufvariable in eine alteVariable.

Mit find(str) müsstest Du auch die ersten drei auflösen - da ist ein direkter Vergleich aber schneller.

Gruß Phil
Bitte warten ..
Mitglied: HansMeier4
11.10.2012 um 22:58 Uhr
Hallo Phil,

Danke für den Tip mit der Schleife.
Ich werde mich da mal reinhängen und schauen was sich machen läßt.
Ich meld mich dann wieder.

Beste Grüße
Der Hans
Bitte warten ..
Mitglied: HansMeier4
19.10.2012 um 23:36 Uhr
Servus,

Danke für die Hinweise.
Ich hab's doch hinbekommen.
Anbei der Codeschnipsel:

01.
:AUSLESEN 
02.
for /d %%i IN ("*") DO ( 
03.
set /a count=!count!+1 
04.
set name!count!=%%i 
05.
06.
 
07.
:VORBEREIT 
08.
set /a zaehler=%count% 
09.
set /a count=0 
10.
 
11.
:AUSWERT 
12.
set verz1=!name%zaehler%! 
13.
set /a zaehler=%zaehler%-1 
14.
IF %zaehler%==0 GOTO ENDE 
15.
set verz2=!name%zaehler%! 
16.
IF %verz1:~0,3%==%verz2:~0,3% echo Achtung: Vermutete Doppelung: %verz1% -- %verz2% 
17.
GOTO AUSWERT
Ich werd jetzt nur noch eine Schleife für Unterverzeichnisse einbauen.

So far....
Der Hans
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell Verzeichnisse vergleichen mit Zwischenschritt (22)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Batch & Shell
gelöst Auslesen und Vergleichen Zweiter CSV Dateien Powershell (7)

Frage von Hainoon zum Thema Batch & Shell ...

Batch & Shell
gelöst AD-Benutzer per Shell auslesen und vergleichen (8)

Frage von ReneBue zum Thema Batch & Shell ...

Windows Server
Verzeichnisse löschen (2)

Frage von MiSt zum Thema Windows Server ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (22)

Frage von NoHopeNoFear zum Thema LAN, WAN, Wireless ...

Drucker und Scanner
Erfahrungen mit Enterprise-Tintenstrahldruckern A4 und A3 (14)

Frage von User1000 zum Thema Drucker und Scanner ...

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (13)

Frage von alemanne21 zum Thema Webentwicklung ...