o0julia0o

Batch soll alle Unterordner durchsuchen, beginnend einem Ordner über ihrem Pfad

Ich möchte mit einer Batch alle Ordner(samt aller Verzeichnistiefen) nach einer Datei durchsuchen. Dort soll dann etwas hinkopiert werden.

Ich kann das Verzeichnis, wo die Batch(Test\#Im) liegt ja definieren =%~dp0.
Dann kann ich mit .. ja einen Ordnerbaum höher wechseln.

Dort muss ich dann alle Ordner samt Unterordnern durchsuchen. Jedoch wird auch immer der #Im-Ordner mitdurchsucht. Genau das möchte ich aber nicht.

Es soll nur der Ordner Test und all seine Unterordner durchsucht werden. Bis auf einen Unterordner: #Im.

Wie stelle ich das an?

lieben Dank!
Share on Facebook
Share on X (Twitter)
Share on Reddit
Share on Linkedin

Content-ID: 671650

Url: https://administrator.de/forum/batch-soll-alle-unterordner-durchsuchen-beginnend-einem-ordner-ueber-ihrem-pfad-671650.html

Printed on: May 12, 2025 at 11:05 o'clock

TK1987
TK1987 Feb 26, 2025 updated at 22:20:46 (UTC)
Goto Top
Moin Julia,

@echo off

set "searchFile=test.txt"  

for /f "delims=" %%A in ('2^>nul dir /s /b /a-d "%~dp0..\%searchFile%" ^| find /v "%~dp0"') do (  
  REM Kopiere hier was auch immer nach %%~dpA
)

Gruß Thomas
o0Julia0o
o0Julia0o Feb 27, 2025 at 12:41:25 (UTC)
Goto Top
Dankeschön TK1987!

@echo off

set "sourceDir=%~dp0GB"  
set "searchFile=test.txt"    

for /f "delims=" %%A in ('2^>nul dir /s /b /a-d "%~dp0..\%searchFile%" ^| find /v "%~dp0"') do (    
copy /Y "%sourceDir%\*.* %%~dpA  
)
pause
exit

Das erhalte ich von der Kommandozeile zurück:
"Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
0 Datei(en) kopiert."

Kopiert wird dann natürlich nix.
TK1987
Solution TK1987 Feb 27, 2025 at 16:19:41 (UTC)
Goto Top
Zitat von @o0Julia0o:
copy /Y "%sourceDir%\*.* %%~dpA  
Das erhalte ich von der Kommandozeile zurück:
"Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
0 Datei(en) kopiert."
Am Ende des Quellpfades fehlen die abschließenden Anführungszeichen. Zudem solltest du auch den Zielordner in Anführungszeichen setzen, damit das Ganze auch bei Leerzeichen im Pfad funktioniert.
copy /Y "%sourceDir%\*.*" "%%~dpA"  
o0Julia0o
o0Julia0o Feb 28, 2025 at 21:28:58 (UTC)
Goto Top
Danke! Sollte nicht in der Test.txt nach dem Ausführen eine "22" stehen?

Speicherort der Batch:
Hauptordner\#Image
Ort der test.txt
Hauptordner

@echo off

set "NEW_ID=22"  
set "searchFile=test.txt"  

    for /f "delims=" %%A in ('2^>nul dir /s /b /a-d "%~dp0..\%searchFile%" ^| find /v "%~dp0"') do (      
            echo %NEW_ID% > "%%A\test.txt"  
        )

exit
TK1987
Solution TK1987 Feb 28, 2025, updated at Mar 01, 2025 at 14:23:56 (UTC)
Goto Top
Zitat von @o0Julia0o:
Danke! Sollte nicht in der Test.txt nach dem Ausführen eine "22" stehen?
echo %NEW_ID% > "%%A\test.txt"  
Nein, der Pfad ist nun falsch. "%%A" ist ja bereits der Pfad der test.txt. "%%~dpA" ist der Ordner, in dem die test.txt liegt.

D.h. du hast nun versucht, die 22 in den Pfad "<Hauptordner>\test.txt\test.txt" zu speichern. Richtig müsste es so lauten:
echo %NEW_ID% > "%%~A"  
oder besser noch: Die Umleitung an den Anfang stellen
>"%%~A" echo %NEW_ID%  
Sonst hat man hinter der 22 noch ein Leerzeichen in der Datei.
o0Julia0o
o0Julia0o Mar 03, 2025 at 18:09:12 (UTC)
Goto Top
Danke! sehr!