115129
Goto Top

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

Content-Key: 321523

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

Printed on: April 18, 2024 at 22:04 o'clock

Mitglied: 77559
77559 Nov 20, 2016 at 00:24:25 (UTC)
Goto Top
Hallo Matze,
taucht denn der Suchbegriff immer in eckigen Klammern und immer am Amfang UND Ende mit Bindestrich auf?
Mitglied: 115129
115129 Nov 20, 2016 at 08:31:57 (UTC)
Goto Top
Guten Morgen LotPings,

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

Und am Ende soll das entfernt werden:
-[LOG]
Mitglied: 131381
Solution 131381 Nov 20, 2016 at 08:59:59 (UTC)
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ß
Mitglied: 115129
115129 Nov 20, 2016 at 11:19:11 (UTC)
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
Mitglied: 115129
115129 Nov 21, 2016 updated at 20:28:51 (UTC)
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
Mitglied: 131381
Solution 131381 Nov 22, 2016 at 12:04:51 (UTC)
Goto Top
rd ist dein Freund ...
rd "%test2%\%%~nxa" /s /q  
Mitglied: 115129
115129 Nov 22, 2016 at 22:08:32 (UTC)
Goto Top
Danke...

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

Gruß,
Matze