Dateiliste ohne Rootverzeichnis

dinoldo

Cadet 4th Year
Registriert
Juni 2017
Beiträge
104
Hallo Leute,

ich habe im einem Verzeichnis diese CMD-Datei, um eine Liste der Dateien incl. Unterverzeichnisse zu erstellen:

PHP:
del PATCH_*.txt

set DATUM_1=%DATE:~6,6%-%DATE:~3,2%-%DATE:~0,2%
set DATUM_2=%DATE:~0,2%.%DATE:~3,2%.%DATE:~6,6%
set VERSION=2017.0

echo Rel. %VERSION% PATCH vom %DATUM_2% >>PATCH_%DATUM_1%_REL_%VERSION%.txt
echo  >>PATCH_%DATUM_1%_REL_%VERSION%.txt
echo ================================================ >>PATCH_%DATUM_1%_REL_%VERSION%.txt
echo Ersetzen: >>PATCH_%DATUM_1%_REL_%VERSION%.txt
echo  >>PATCH_%DATUM_1%_REL_%VERSION%.txt

dir /s /c /b /a:-d /o:n | find /V "PATCH_*.txt" | find /V "files.cmd" >>PATCH_%DATUM_1%_REL_%VERSION%.txt

Folgendes bekomme ich nicht hin:
a) In der erstellte TXT-Datei (Bsp. PATCH_2017-10-15_REL_2017.0.txt) soll die Datei PATCH_* aus dem Root-Verzeichnis nicht aufgeführt sein. Die Datei beginnt mit PATCH_ und wird von Zeit zu Zeit von Datum her anders.

b) der Pfad von Root Verzeichnis soll nicht aufgeführt sein. Anstatt: C:\SUPPORT\Daten\bin\browse8i.dll
soll nachher so sein: \bin\browse8i.dll

Was muss ich bitte ändern?

Beste Grüße,
Dino
 
So sollte das eigentlich funktionieren:
Code:
del PATCH_*.txt
 
set DATUM_1=%DATE:~6,6%-%DATE:~3,2%-%DATE:~0,2%
set DATUM_2=%DATE:~0,2%.%DATE:~3,2%.%DATE:~6,6%
set VERSION=2017.0
 
echo Rel. %VERSION% PATCH vom %DATUM_2% >>PATCH_%DATUM_1%_REL_%VERSION%.txt
echo.  >>PATCH_%DATUM_1%_REL_%VERSION%.txt
echo ================================================ >>PATCH_%DATUM_1%_REL_%VERSION%.txt
echo Ersetzen: >>PATCH_%DATUM_1%_REL_%VERSION%.txt
echo.  >>PATCH_%DATUM_1%_REL_%VERSION%.txt

setlocal EnableDelayedExpansion

SET PrefixToIgnore=C:\SUPPORT\Daten

FOR /F "tokens=*" %%a IN ('dir /s /c /b /a:-d /o:n') DO (
	SET line=%%a
	SET fileName=%%~nxa
	ECHO !fileName! |findstr /r "PATCH_.*\.txt" >NUL && (
	  :: Filenamen mit "Patch_*.txt" ignorieren
	  ECHO !fileName! ignoriert
	) || (
	  ECHO !fileName! |findstr /c:"files\.cmd" >NUL && (
		:: Filenamen "files.cmd" ignorieren
		ECHO !fileName! ignoriert
	  ) || (
		:: Prefix entfernen
		SET line=!line:%PrefixToIgnore%=!

                :: Zeile ausgeben
		ECHO !line!>>PATCH_%DATUM_1%_REL_%VERSION%.txt
	  )
	)
)
 
Zurück
Oben