115129

Scriptänderung - Verzeichnis suchen, Verzeichnisname in Textdateinamen konvertieren und Such-Tag entfernen

Hallo zusammen,

ich beiße mir gerade die Zähne an einer Änderung aus und hoffe hier Tipps zu erhalten.


Das seither angewandte Script sucht in einem bestimmten Verzeichnis ein Verzeichnisname mit einem bestimmten Wort und kopiert mir den gefundenen Ordner in ein anderes Verzeichnis.

set "Test1=C:\Test1"  
set "Test2=C:\Test2"  

for /f "delims=" %%a in ('dir /b /ad "%Test1%"') DO @(  
	for /D %%b in ("%Test1%\%%a\*[log]*") DO @(  
		if exist "%Test2%\%%~nxa.*" robocopy "%%b" "%Test2%\%%~nxb" * /E  
)
			)

goto :eof


Nun möchte ich das bestehende Script so abändern, dass es mir eine Textdatei mit dem gefundenen Verzeichnisnamen erstellt, anstatt das Verzeichnis zu kopieren.
Hinzu sollte bei der Erstellung der Textdatei der Such-Tag "log" in dem Textdateinamen entfernt werden.

Beispiel:
Test1=C:\Test1\Backup\[LOG]-18.11.2016-11.21.51-[LOG]
Test2=C:\Test2\18.11.2016-11.21.51.txt


Vielen Dank für Eure Hilfe.

Gruß,
Matze
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 321523

Url: https://administrator.de/forum/scriptaenderung-verzeichnis-suchen-verzeichnisname-in-textdateinamen-konvertieren-und-such-tag-entfernen-321523.html

Ausgedruckt am: 01.05.2025 um 14:05 Uhr

77559
77559 20.11.2016 um 01:24:25 Uhr
Goto Top
Hallo Matze,
taucht denn der Suchbegriff immer in eckigen Klammern und immer am Amfang UND Ende mit Bindestrich auf?
115129
115129 20.11.2016 um 09:31:57 Uhr
Goto Top
Guten Morgen LotPings,

ganz genau, am Anfang soll das entfernt werden:
[LOG]-

Und am Ende soll das entfernt werden:
-[LOG]
131381
Lösung 131381 20.11.2016 um 09:59:59 Uhr
Goto Top
set "Test1=C:\Test1"  
set "Test2=C:\Test2"  

for /f "delims=" %%a in ('dir /b /ad "%Test1%"') DO @(  
	for /d %%b in ("%Test1%\%%a\*[log]*") DO @(  
		for /f "tokens=2,3 delims=-" %%c in ("%%~nxb") do type NUL >"%Test2%\%%c-%%d.txt"  
        )
)
Gruß
115129
115129 20.11.2016 um 12:19:11 Uhr
Goto Top
Hallo mikrotik,

vielen Dank für deine Vervollständigung.

Ich habe nun dein Code noch etwas an meine Bedürfnisse nach bestem Wissen angepasst:
set "Test1=C:\Test1"  
set "Test2=C:\Test2"  

for /f "delims=" %%a in ('dir /b /ad "%Test1%"') DO @(  
	for /d %%b in ("%Test1%\%%a\*[log]*") DO @(  
		if not exist "%Test2%\%%a" del "%Test2%\%%a*.txt"  
		for /f "tokens=2,3,4 delims=-" %%c in ("%%~nxb") do if exist "%Test2%\%%~nxa.*" type NUL >"%Test2%\%%a__%%d-%%e.txt"  
		)
)
goto :eof

So funktioniert es zumindest wie ich es gerne haben möchte face-smile

Vielen Dank und einen schönen Sonntag.

Gruß,
Matze
115129
115129 21.11.2016 aktualisiert um 21:28:51 Uhr
Goto Top
Hallo,

ich müsste nochmal was zu diesem Thema bzw. zu dem unten stehenden Code in Erfahrung bringen.

Wenn z.B. die Datei "C:\Test2\Test\log.txt" nicht mehr vorhanden ist unter "C:\Test2\Test", soll das Verzeichnis "C:\Test2\Test" samt Inhalt gelöscht werden.
Ich denke das müsste mit der Zeile...
if not exist "%Test2%\%%a\%%~nxa.*" del "%Test2%\%%~nxa" /s /q  
realisierbar sein.

Ich bin mir nur nicht sicher ob da Fehler drinne sind bzw. ob dies an der falschen Stelle steht...das Verzeichnis wird jedenfalls nicht gelöscht.

set "Test1=C:\Test1"  
set "Test2=C:\Test2"  

for /f "delims=" %%a in ('dir /b /ad "%Test1%"') DO @(  
	if exist "%Test2%\%%~nxa.*" md "%Test2%\%%~nxa"  
		move "%Test2%\%%~nxa.*" "%Test2%\%%~nxa"  
			if not exist "%Test2%\%%a\%%~nxa.*" del "%Test2%\%%~nxa" /s /q  
				for /d %%b in ("%Test1%\%%a\*[log]*") DO @(  
					for /f "tokens=2,3,4 delims=-" %%c in ("%%~nxb") do if exist "%Test2%\%%~nxa.*" md "%Test2%\%%a\%%c-%%d-%%e"	  
				)
)

goto :eof

Danke schon Mal.

Gruß,
Matze
131381
Lösung 131381 22.11.2016 um 13:04:51 Uhr
Goto Top
rd ist dein Freund ...
rd "%test2%\%%~nxa" /s /q  
115129
115129 22.11.2016 um 23:08:32 Uhr
Goto Top
Danke...

...rd wurde zu meinem Freund und es funktioniert 1a ;)

Gruß,
Matze