Suchen von gleichen Dateien (Name plus Endung) innerhalb eines Verzeichnisses mit Unterverzeichnissen
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:
Fällt jemanden eine Möglichkeit ein dies ohne diese doppelten Ausgaben zu realisieren?
Gruß,
YAN
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:
@echo off
for /R C:\skript_6\tj1\ %%J in (*.*) do (
for /R C:\skript_6\tj1\ %%I in (*.*) do (
if %%~nxJ==%%~nxI (
if %%J==%%I (
echo.
) else (
echo %%J sowie %%I
)
)
)
)
)
Fällt jemanden eine Möglichkeit ein dies ohne diese doppelten Ausgaben zu realisieren?
Gruß,
YAN
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 88943
Url: https://administrator.de/contentid/88943
Ausgedruckt am: 29.03.2024 um 08:03 Uhr
5 Kommentare
Neuester Kommentar
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:
Grüße
Biber
Ist dennoch buggy und tut es nicht. s.u.[/Edit]
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:
@echo off & setlocal
Set "yat=%temp%\YetAnotherTempfile.YAT"
Echo.>"%yat%"
for /R C:\skript_6\tj1\ %%J in (*.*) do (
for /R C:\skript_6\tj1\ %%I in (*.*) do (
if "%%~nxJ"=="%%~nxI" (
if "%%J"=="%%I" (
echo.
) else (
FindStr /i /C:"%%I sowie %%J" "%yat%">nul || echo %%J sowie %%I>>"%yat%"
)
)
)
)
)
:: hier ggf ein Anzeigen von %Yat% mit TYPE o.ä. , siehe bei bastla
if exist "%yat%" del "%yat%"
Grüße
Biber
... oder, etwas abgewandelt:
Vorteil wäre hier, dass die Ergebnisse nicht nur ausgegeben werden, sondern auch (in %yat%) gespeichert zur Verfügung stehen.
Grüße
bastla
@echo off & setlocal
Set "yat=%temp%\YustAnotherTempfile.YAT"
Echo\>"%yat%"
for /R C:\skript_6\tj1\ %%J in (*.*) do (
for /R C:\skript_6\tj1\ %%I in (*.*) do (
if "%%~nxJ"=="%%~nxI" (
if "%%J" neq "%%I" (
FindStr /i /C:"%%I sowie %%J" "%yat%">nul || echo %%J sowie %%I>>"%yat%"
)
)
)
)
type %yat%
Grüße
bastla