o0julia0o
Goto Top

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!

Content-ID: 671650

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

Ausgedruckt am: 31.03.2025 um 06:03 Uhr

TK1987
TK1987 26.02.2025 aktualisiert um 23:20:46 Uhr
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 27.02.2025 um 13:41:25 Uhr
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
Lösung TK1987 27.02.2025 um 17:19:41 Uhr
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 28.02.2025 um 22:28:58 Uhr
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
Lösung TK1987 28.02.2025, aktualisiert am 01.03.2025 um 15:23:56 Uhr
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 03.03.2025 um 19:09:12 Uhr
Goto Top
Danke! sehr!