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

Inhalt von zwei Ordnern (und Unterordnern) vergleichen

Frage Entwicklung Batch & Shell

Mitglied: -PzYcO-

-PzYcO- (Level 1) - Jetzt verbinden

12.05.2010, aktualisiert 18.10.2012, 5527 Aufrufe, 9 Kommentare

Problemstellung:
2 Ordner (frei wählbar) sollen miteinander vergleichen werden. Doppelte Dateien sollen in einer Logdatei ausgegeben werden. Der genaue Pfad der Dateien soll angegeben sein. Dateien die den gleichen Namen aber unterschiedliche Eigenschaften haben sollen extra gekennzeichnet werden.

Zur Verfügung steht:
BATCH

Hallo liebe Administratoren,
zu der oben genannten Problemstellung suche ich nun Möglichkeiten das zu realisieren.

01.
SET /P DIR1=Pfad zu Ordner 1: 
02.
SET /P DIR2=Pfad zu Ordner 2: 
03.
SET /P LOG=Pfad für Logfiles: 
04.
 
05.
ECHO Folgende Dateien wurden mehrfach gefunden: >> %LOG%\compare.log 
06.
for /r %DIR1% %%i in (*.*) do call :write1 %%~nxi 
07.
goto eof 
08.
:write1 
09.
if exist %DIR2%\%1 ECHO • %DIR2%\%1 >> %LOG%\compare.log
Das vergleicht zwar schon zwei Ordner, allerdings fehlen noch die Unterordner. Hat jemand eine Idee?

PS: Bitte keine Links zu externen Programmen oder Lösungen mit VB, die Aufgabe lautet "leider" es mit Batch zu realisieren.
Mitglied: LotPings
12.05.2010 um 13:59 Uhr
Tja,

du machst es dir ja auch etwas zu einfach.

Die for /r Schleife geht auch in die Unterordner, aber DU übergibst an die :Sub nur den Namen mit Extension; die dazwischenliegenden Unterordner unterschlägst du.
Übergebe den kompletten Namen %%~fi

und speicherin ihn der sub in einer Variable.
In der variable dann den "Dir1" durch "Dir2" ersetzen, das ist dein Zielname,
CAll set Variable=%%Variable:%Dir1%=%Dir2%%%

Gruß
LotPings

edit: da fehlten noch %-Zeichen
Bitte warten ..
Mitglied: -PzYcO-
25.05.2010 um 09:07 Uhr
Hallo LotPings,

da ich leider nicht genau weiß wohin dieser Teil des Codes gehört wäre ich dir dankbar wenn du den ganzen Codeausschnitt einmal posten könntest.

Danke und Gruß
-PzYcO-
Bitte warten ..
Mitglied: LotPings
25.05.2010 um 11:07 Uhr
Zitat von -PzYcO-:
da ich leider nicht genau weiß wohin dieser Teil des Codes gehört wäre ich dir dankbar wenn du den ganzen
Codeausschnitt einmal posten könntest.

Du bist dir schon darüber im Klaren das es deine Aufgabe ist ?
Du hattest doch jetzt 13 Tage Zeit, darüber nachzudenken / daran zu arbeiten.

Ich hoffe du gibst auch einen Quellenhinweis, denn auch Lehrer können erkennen das es nicht deine "Handschrift" ist.

01.
@Echo off 
02.
CLS 
03.
SET /P DIR1=Pfad zu Ordner 1:  
04.
SET /P DIR2=Pfad zu Ordner 2:  
05.
SET /P LOGP=Pfad für Logfiles:  
06.
(Set LOG=^>^>"%LOGP%.\compare.log") 
07.
 
08.
ECHO Folgende Dateien wurden mehrfach gefunden: %LOG:~1% 
09.
for /r "%DIR1%" %%i in (*.*) do call :write1 "%%~fi" 
10.
More %LOG:~2% 
11.
goto :Eof 
12.
:write1 
13.
Set "Zieldatei=%~1" 
14.
CAll set Zieldatei=%%Zieldatei:%Dir1%=%Dir2%%% 
15.
If Not exist "%Zieldatei%" goto :eof 
16.
%LOG% ECHO • %~1 
17.
%LOG% ECHO • %Zieldatei% 
18.
For %%A in (%Zieldatei% 
19.
  ) do Set "Attr=%%~aA"&Set "Size=%%~zA"&Set "DaTi=%%~tA" 
20.
If "%~a1" NEQ "%Attr%" %LOG% Echo abw. Attribute %~a1  %Attr% 
21.
If "%~z1" NEQ "%Size%" %LOG% Echo abw. Groesse   %~z1  %Size% 
22.
If "%~t1" NEQ "%DaTi%" %LOG% Echo abw. DatumZeit %~t1  %DaTi%
Gruß
LotPings

Edit: verlorenes "(" eingesetzt
@Biber, Da unterschätzt du meine Fähigkeit im Codelesen (auch nach 1 Jahr).
Ich hasse geradezu tot kommentierten Code; da kann man keine Strukturen mehr erkennen.
Bitte warten ..
Mitglied: Biber
25.05.2010 um 11:58 Uhr
Moin Psycho,

und noch ein weiterer freundlicher Hinweis ergänzend zu LotPings'
Zitat von LotPings:
Ich hoffe du gibst auch einen Quellenhinweis, denn auch Lehrer können erkennen das es nicht deine "Handschrift" ist.
Sollte ich mal wieder im Rahmen einer Projektwoche etwas Sensibilität für Codequalität an einer Schule schaffen wollen...
--> ein Codeschnipsel ohne jegliche Kommentierung kann niemals besser als "ausreichend" bewertet werten.
Obwohl LotPings durchaus "selbst erklärende" Variablennamen verwendet hat und der Schnipsel keine zwei Dutzend Zeilen lang ist,
wird selbst er, wenn er seinen eigenen Code in einem halben Jahr anpassen muss, alles erst vierfach lesen müssen,
bevor er ein "Ach ja, so hatte ich das gedacht.." von sich gibt.

Wenn dein Lehrer sich etwas bei der Aufgabe gedacht hat, dann wird er zwar die formale Lösung ("Schnipsel tut, was er soll") gewichten mit 60%, aber eine strukturierte und nachvollziehbare Herangehensweise und handwerkliche Sorgfalt eben auch mit 40%.

Grüße
Biber

[Edit]
@LotPings
@Biber, Da unterschätzt du meine Fähigkeit im Codelesen (auch nach 1 Jahr).
Nach meinen Beobachtungen gibt es aber auch einen Unterschied zwischem "eigenen Code wieder nachvollziehen können" und "fremden Code ohne Kommentare verstehen können".
(Abschreckende) Extrembeispiele sind doch immer wieder diese Taschenspielertrick-Codefragmente in den Tankstellen-PC-Zeitschriften....boah..wunderbar kurz, wunderbar geheim und so undokumentiert, dass es fast schon illegal ist. Ja hey! Arbeiten wir Administratoren mehr auf Produktivsystemen oder ausschließlich im Internetcafe?
Ich hasse geradezu tot kommentierten Code; da kann man keine Strukturen mehr erkennen.
Dir ist aber auch noch in Erinnerung, dass zum Beispiel Mathelehrer sehr selten damit zufrieden sind, wenn unter einer Klausuraufgabe zur Volumenberechnung eines load of bollocks einfach nur "3,378 Kubikmeter" ohne nähere Erläuterung geschrieben steht.?

Außerdem...genau genommen habe ich bei keinem der hier aktiven Codeschroter richtige Angst, dass die etwas tot kommentieren könnten.
Okay, wenn die vielleicht so 370 bis 380 Jahre Zeit dafür hätten....
[/Edit]
Bitte warten ..
Mitglied: bastla
25.05.2010 um 17:08 Uhr
[OT]
@Biber
genau genommen habe ich bei keinem der hier aktiven Codeschroter richtige Angst, dass die etwas tot kommentieren könnten.
Ich hatte gedacht, nur Du "schrotest" ...

Grüße
bastla (der sich sowas von in keinster Weise überhaupt gar nicht angesprochen fühlt - und sonst eigentlich nicht zum Lügen neigt ...)
[/OT]
Bitte warten ..
Mitglied: Biber
25.05.2010 um 17:15 Uhr
[OT] @bastla
Zitat von bastla:
Grüße
bastla (der sich sowas von in keinster Weise überhaupt gar nicht angesprochen fühlt ... )
Ich habe neulich auf einem meiner Rechner ein paar Dateien mit der Endung *.bkf gesehen....
Aber keine drei Hunderstel Sekunden überlegt, ob es Dateien in bastlas Kommentar-Format sein könnten...
..die waren alle größer als 0 Byte....

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: LotPings
25.05.2010, aktualisiert 18.10.2012
Zitat von Biber:
Außerdem...genau genommen habe ich bei keinem der hier aktiven Codeschroter richtige Angst, dass die
etwas tot kommentieren könnten.

Ich bin ja mit all dem einverstanden
Ich habe auch weniger an die Aktiven gedacht, die haben da eh keine für, sondern z.Bsp. an sowas ohne den Autor jetzt besonders hervorheben zu wollen.

Ansonsten gelobe ich Besserung (wenn ich mal Zeit habe)

Gruß
LotPings
Bitte warten ..
Mitglied: Biber
25.05.2010, aktualisiert 18.10.2012
Moin Lordchen,

Zitat von LotPings:
Ich habe auch weniger an die Aktiven gedacht [...],sondern z.Bsp. an sowas ohne den Autor jetzt besonders hervorheben zu wollen.

Jessas! Den Beitrag habe ich heute zum ersten Mal gelesen... und verstehe, was Du meinst. *Luft schnapp*
Es gibt auch für mich Codeschnipsel, bei denen ich nach wenigen Zeilen nur noch den Wunsch verspüre, sofort zu erblinden und für immer das Gedächtnis zu verlieren.
Um es mal vorsichtig auszudrücken.

Aber es ist doch gut, dass wir mal hin und etwas OffTopic (oder eigentlich ganzheitlich) querposten...
... sonst wären solche kleinen Schätze wie dein Link für immer verloren...

Danke
Biber
Bitte warten ..
Mitglied: -PzYcO-
26.05.2010 um 11:45 Uhr
Ich glaube ich wurde hier missverstanden. Ich wollte nicht den gesamten Code sondern lediglich wissen an welcher Stelle der komplette Dateiname übergeben werden sollte, da ich nicht wusste was er meinte.

LotPings:
Die for /r Schleife geht auch in die Unterordner, aber DU übergibst an die :Sub nur den Namen mit Extension; die dazwischenliegenden Unterordner unterschlägst du.
Übergebe den kompletten Namen %%~fi

Ich habe das Problem aber inzwischen lösen können.
Trotzdem danke für eure Bemühungen!

PzYcO
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...