rodgerwilco
Goto Top

Abgleich Dateiname zu Verzeichisname mittels Batch

Hallo zusammen,

ich tue mich mit dem Schreiben einer Batch-Datei mal wieder etwas schwer. Daher wäre ich für eure Hilfe Dankbar.
Ich habe zwei Verzeichnisse. In einem Verzeichnis liegen Dateien in dem anderen liegen Unterverzeichnisse. Die Dateien haben das Namensformat <Eigenschaft>.txt, die Unterverzeichnisse haben das Namensformat <Eigenschaft>.xy Ja, der Verzeichnisname hat eine Punkt face-wink

Was ich tun möchte ist folgendes:
Per Batch soll abgeglichen werden, für welche TXT-Datei ein entsprechendes Verzeichnis bereits existiert (Abgleich über den Namen ohne Erweiterung). Ausreichen würde die Anzahl, wie viele existieren, bzw wie viele noch fehlen. Alternativ wäre auch eine Auflistung, welche vorhanden sind und welche fehlen eine Option.

Kann mir jemand hierbei helfen? Mein bisheriger Ansatz sieht wie folgt aus:

@echo off

Set _anzahlVorhanden=0

set SOURCE=%~1
set DEST=%~2

for %%i in (%SOURCE%\*.txt) do set 1=%%~ni(
	for %%a in (%DEST%\*.xy) do set 1=%%~na(
		IF %%i == %%n (
			!_anzahlVorhanden! = !_anzahlVorhanden! + 1
		)
	)
)

echo Es sind&!anzahlVorhanden! Uebereinstimmungen vorhanden.

Content-Key: 298494

Url: https://administrator.de/contentid/298494

Printed on: May 5, 2024 at 08:05 o'clock

Member: Friemler
Solution Friemler Mar 08, 2016 at 09:49:57 (UTC)
Goto Top
Hallo rodgerwilco,

teste mal folgendes:
@echo off & setlocal

set "Files=Pfad-zum-Verzeichnis-mit-Dateien"  
set "Folders=Pfad-zum-Verzeichnis-mit-Ordnern"  

for %%f in ("%Files%\*.*") do (  
  for /d %%d in ("%Folders%\*.*") do (  
    if "%%~nf" equ "%%~nd" (  
      echo Verzeichnis %%~nf vorhanden
    )
  )
)

for %%f in ("%Files%\*.*") do (  
  set "Found="  
  
  for /d %%d in ("%Folders%\*.*") do (  
    if "%%~nf" equ "%%~nd" (  
      set "Found=1"  
    )
  )
  
  if not defined Found (
    echo Verzeichnis %%~nf nicht vorhanden
  )
)

Gruß
Friemler
Mitglied: 114757
114757 Mar 08, 2016 at 12:09:13 (UTC)
Goto Top
Oder auch mit Powershell ein Einzeiler:
compare (gci 'C:\quelle\*.txt' -File | select -Expand Basename) (gci 'C:\ziel' -Directory | %{($_.Name -split '\.')}) -IncludeEqual  
Gruß jodel32
Member: rodgerwilco
rodgerwilco Mar 10, 2016 at 06:49:44 (UTC)
Goto Top
Vielen Dank, die Batch funktioniert super. Auch das Powershellskript tut, was es soll. Gesucht habe ich jedoch eine möglichkeit per Batch.