thomasgeisler
Goto Top

Nur bestimmte Ordnernamen mit Inhalt ausgeben

Hallo Gemeinde.
Kann mir jemand bitte behilflich sein?

Ich möchte inder gesamten Ordnerstruktur einen Ordner mit dem Namen zb. #Rechnungen neu finden und die Pfade des Anwenders in eine Datei umleiten.
JEDOCH NUR wenn der Ordner NICHT leer ist.

Ich muss täglich prüfen ob in diesen Orner Dateien abgelegt wurden.

Pfadbeispiel \Abteilung\Anwender A-Z\#Rechnungen neu

Hier sollen nun bei jedem Anwender geprüft werden ob in "'Rechnungen neu" neue Dateien liegen.
Wenn Ja, diesen Pfad in eine Datei schreiben.

Hier habe ich bereits verschiedenes versucht.
Dies war der letzte erfolglose:
for /d %%i in (*) do (Dir /B /S /AD #Rechnungen*)> Test1.txt
for /f %%j in ("%%i") do (if file exist %%i\*.*) > Test2.txt  

Auch dies habe ich versucht:
for /d %%i in (*) do (
 for /d %%j in ("%%~i\*") do (  
	for /d %%k in ("%%~j\#Rechnungen neu") do (if file exist "%%~k")> Test3.txt  
		)
	)
)
Vielen Dank.

Content-Key: 638906

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

Printed on: April 20, 2024 at 01:04 o'clock

Member: NetzwerkDude
Solution NetzwerkDude Jan 08, 2021 updated at 15:05:04 (UTC)
Goto Top
nun, steig von cmd auf powershell um, dann gehts komfortabler face-smile

$root = 'D:\playground'  
$searchterm = '#Rechnungen neu'  
$ausgabe = 'ausgabe.txt'  

(gci -Path $root -Filter $searchterm -Recurse).FullName | %{if (Test-Path $_\*) {$_}} > $ausgabe

dabei sucht man mit get-childitem nach allen ordnern "#Rechnungen neu" und schaut mithilfe von test-path ob in diesem ordner dateien sind, falls ja, wird der komplette name des pfades in die ausgabe umgeleitet

du kannst das skript mit den drei variablen oben anpassen

wenn du den namen der dateien IM ordner haben willst, dann die anweisung im if block anpassen wieder auf gci:
(gci -Path $root -Filter $searchterm -Recurse).FullName | %{if (Test-Path $_\*) {(gci $_).FullName}} > $ausgabe
Member: ThomasGeisler
ThomasGeisler Jan 08, 2021, updated at Jan 09, 2021 at 13:01:15 (UTC)
Goto Top
Hi, vielen Dank. Ergebnis stimmt. Kann man den Pfadnamen der Ausgabe auf das Benutzerverzeichnis kürzen?

Habe noch
$root = 'D:\playground'  
durch
$root = get-location
ersetzt.
geht super. Nochmals Danke.
Member: ThomasGeisler
ThomasGeisler Jan 10, 2021 at 13:16:27 (UTC)
Goto Top
Als Nachtrag die Lösung als Batch:

for /d %%i in (*) do (
 for /d %%j in ("%%~i\*") do (  
 if exist "%%~j\#Rechnungen neu" dir /b /A:-d "%%~j\#Rechnungen neu">nul 2>&1 && ECHO "%%~j" >>#neue.txt  
  )
)