Batch: bestimmte Datei finden und den Ordner verschieben
Hallo!
ich hoffe ich bin hier richtig, es geht um folgendes Problem: in einem Ordner liegen mehrere Unterordner mit weiteren Unterordnern (ca. 15k, Tiefe 3). In ca. 5k davon kommt eine *.opf-Datei vor. Ich möchte nun alle Ordner, in denen diese DateI vorkommt an einen anderen Ort / andere Festplatte verschieben. Leider bin ich ziemlich unbedarft was Programmierung anbelangt. Vielleicht kann mir jemand die Richtung weisen und ob Batch dafür überhaupt geeignet ist.
Vielen Dank schonmal
Gari
ich hoffe ich bin hier richtig, es geht um folgendes Problem: in einem Ordner liegen mehrere Unterordner mit weiteren Unterordnern (ca. 15k, Tiefe 3). In ca. 5k davon kommt eine *.opf-Datei vor. Ich möchte nun alle Ordner, in denen diese DateI vorkommt an einen anderen Ort / andere Festplatte verschieben. Leider bin ich ziemlich unbedarft was Programmierung anbelangt. Vielleicht kann mir jemand die Richtung weisen und ob Batch dafür überhaupt geeignet ist.
Vielen Dank schonmal
Gari
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 245888
Url: https://administrator.de/contentid/245888
Ausgedruckt am: 17.11.2024 um 17:11 Uhr
9 Kommentare
Neuester Kommentar
Moin Gari, Willkommen auf Administrator.de!
Grüße Uwe
p.s. Wenn du hier die Suchfunktion mit den Begriffen "Batch verschieben" fütterst bekommst du einige hundert Antworten zum Thema auch zu deinem
@echo off & setlocal ENABLEDELAYEDEXPANSION
set "quelle=c:\files"
set "ziel=c:\ziel"
for /f "delims=" %%a in ('dir /B /S /A-D "%quelle%\*.opf" 2^>nul') DO @(
set "ordner=%%~dpa"
echo Verschiebe "!ordner:~,-1!" nach "%ziel%"
move "!ordner:~,-1!" "%ziel%"
)
p.s. Wenn du hier die Suchfunktion mit den Begriffen "Batch verschieben" fütterst bekommst du einige hundert Antworten zum Thema auch zu deinem
Hi,
auf das Vorhanden des "_" Zeichens kannst du per 'dir /B /S /A-D "%quelle%\*_*.opf" 2^>nul" prüfen.
Je nachdem wo das "_" ist, muss du mit * den anderen Text markieren. Aus Blub_Test.txt wird *_*.txt.
Zu "!ordner:~,-1!" heißt, dass der / im Pfad entfernt wird, einfach mit echo Testen, einmal mit :~,-1 und einmal ohne
auf das Vorhanden des "_" Zeichens kannst du per 'dir /B /S /A-D "%quelle%\*_*.opf" 2^>nul" prüfen.
Je nachdem wo das "_" ist, muss du mit * den anderen Text markieren. Aus Blub_Test.txt wird *_*.txt.
Zu "!ordner:~,-1!" heißt, dass der / im Pfad entfernt wird, einfach mit echo Testen, einmal mit :~,-1 und einmal ohne
Dieser Ausdruck entfernt das letzte Zeichen der Variablen "Ordner", also den letzten Slash "/" vom Quell-Pfad. Eine gute Anleitung für Batch-String-Manipulationen dieser Art findest du hier: http://www.dostips.com/DtTipsStringManipulation.php
den Rest hat ja @batchnewbie schon vorweg genommen (danke dafür)
Grüße Uwe
den Rest hat ja @batchnewbie schon vorweg genommen (danke dafür)
Grüße Uwe