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

Suchen von gleichen Dateien (Name plus Endung) innerhalb eines Verzeichnisses mit Unterverzeichnissen

Frage Entwicklung Batch & Shell

Mitglied: YetAnotherNick

YetAnotherNick (Level 1) - Jetzt verbinden

02.06.2008, aktualisiert 04.06.2008, 3905 Aufrufe, 5 Kommentare

Hallo allesamt,

ich stehe vor folgendem Problem:

Ich will mittels Batch (Ja, über VBS und externe Tools geht es einfacher, ich weiß ;). ) Dateien in einem Verzeichnis inkl. Unterverzeichnisse auf den identischen Namen überprüfen.

Soll heißen, wenn sich in C:\ABC\ sowie in C:\ABC\CBA\ dieselbe Datei befindet (gehen wir einfach mal von Datei.XYZ aus) möchte ich dies ausgegeben haben.

Ich hatte auch schon etwas gebastelt, was dies übernommen hat - mit erfolgreicher Ausgabe. Einziges Problem bei der ganzen Sache war, dass er mir ausgegeben hat, dass sowohl

C:\ABC\Datei.xyz mit C:\ABC\CBA\Datei.XYZ

sowie

C:\ABC\CBA\Datei.XYZ mit C:\ABC\Datei.XYZ

übereinstimmt. Das ist ja leider doppelt gemoppelt und dementsprechend nicht notwendig.

Realisiert hatte ich das bisher mit:

01.
@echo off 
02.
for /R C:\skript_6\tj1\ %%J in (*.*) do (	 
03.
 for /R C:\skript_6\tj1\ %%I in (*.*) do ( 
04.
  if %%~nxJ==%%~nxI ( 
05.
    if %%J==%%I ( 
06.
     echo. 
07.
    ) else ( 
08.
     echo %%J sowie %%I 
09.
10.
11.
12.
13.
)
Fällt jemanden eine Möglichkeit ein dies ohne diese doppelten Ausgaben zu realisieren?

Gruß,
YAN
Mitglied: Biber
02.06.2008 um 16:43 Uhr
Moin YAN,

willkommen im Forum.
Du könntest diese Ausgabe statt auf den Bildschirm in eine temporäre Datei umleiten.
Dann hättest Du die Möglichkeit, vorher nach dem spiegelbildlichen Vorkommen zu suchen.

Ungetestete Skizze:
01.
@echo off & setlocal 
02.
Set "yat=%temp%\YetAnotherTempfile.YAT" 
03.
Echo.>"%yat%" 
04.
for /R C:\skript_6\tj1\ %%J in (*.*) do (	 
05.
 for /R C:\skript_6\tj1\ %%I in (*.*) do ( 
06.
  if "%%~nxJ"=="%%~nxI" ( 
07.
    if "%%J"=="%%I" ( 
08.
     echo. 
09.
    ) else ( 
10.
     FindStr /i /C:"%%I sowie %%J" "%yat%">nul || echo %%J sowie %%I>>"%yat%" 
11.
12.
13.
14.
15.
16.
:: hier ggf ein Anzeigen von %Yat% mit TYPE o.ä. , siehe bei bastla 
17.
if exist "%yat%" del "%yat%"
Grüße
Biber

[Edit 3.6.2008] "&&"-Bedingung in Zeile 10 auf "||" geändert nach Bugfix bastla,
Ist dennoch buggy und tut es nicht. s.u.[/Edit]
Bitte warten ..
Mitglied: bastla
02.06.2008 um 17:40 Uhr
... oder, etwas abgewandelt:
01.
@echo off & setlocal 
02.
Set "yat=%temp%\YustAnotherTempfile.YAT" 
03.
Echo\>"%yat%" 
04.
for /R C:\skript_6\tj1\ %%J in (*.*) do (	 
05.
 for /R C:\skript_6\tj1\ %%I in (*.*) do ( 
06.
  if "%%~nxJ"=="%%~nxI" ( 
07.
    if "%%J" neq "%%I" ( 
08.
     FindStr /i /C:"%%I sowie %%J" "%yat%">nul || echo %%J sowie %%I>>"%yat%" 
09.
10.
11.
12.
13.
type %yat%
Vorteil wäre hier, dass die Ergebnisse nicht nur ausgegeben werden, sondern auch (in %yat%) gespeichert zur Verfügung stehen.

Grüße
bastla
Bitte warten ..
Mitglied: YetAnotherNick
03.06.2008 um 07:28 Uhr
Wow, das ging ja fix - und ist genau das, was ich gebraucht habe.

Danke fuer die schnellen Antworten !

--
Edit:

Hmm, da habe ich mich wohl etwas zu früh gefreut. Leider erscheinen die Duplikate immernoch.

Inwiefern fängt das FindStr denn die Duplikate ab? Und/Oder wie kann ich am besten eine Überprüfung einbauen?

Und um das Ganze nochmal darzustellen - Ich möchte statt:

01.
C:\Skript_6\tj2\mfc70.dll sowie C:\Skript_6\tj2\blub\mfc70.dll 
02.
C:\Skript_6\tj2\blub\mfc70.dll sowie C:\Skript_6\tj2\mfc70.dll
nur

01.
C:\Skript_6\tj2\mfc70.dll sowie C:\Skript_6\tj2\blub\mfc70.dll
haben.

Gruß,
ein wenig verwirrter YAN
Bitte warten ..
Mitglied: bastla
03.06.2008 um 19:27 Uhr
Hallo YAN!

Ändere die Zeile 8 auf
01.
FindStr /i /C:"%%I" "%yat%">nul || echo %%J sowie %%I>>"%yat%"
Grüße
bastla
Bitte warten ..
Mitglied: YetAnotherNick
04.06.2008 um 08:41 Uhr
!

Super, danke!

Und ich war schon leicht am verzweifeln - aber es sind ja (wie üblich) die kleinen Sachen ^^ ;).

Gruß,
YAN
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Systemdateien
NTFS und die Defragmentierung (26)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (18)

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

Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...