hyper-p
Goto Top

Batch: Umbenennen und Kopieren von Dateien in mehreren Verzeichnissen

Guten Morgen,

ich würde gerne in einer Batch-Datei unter anderem folgendes umsetzen:

Aus einer Netzwerkfreigabe soll eine bestimmte Datei in mehrere Verzeichnisse auf dem lokalen PC kopiert werden, vorher aber die jeweilge Originaldatei umbenannt werden.

Das Script soll also möglichst, ohne dass ich für jedes einzelne mögliche Verzeichnis eine eigene Zeile schreibe, die jeweiligen Unterverzeichnisse mit der bestimmten, darin enthaltenen Datei heraussuchen, die Datei umbenennen und danach die neue Datei aus der Netzwerkfreigabe hinein kopieren.

%appdata%\Test\Unter_Test 1\
%appdata%\Test\Unter_Test Test\
%appdata%\Test\Unter_Test 23\
usw.

in all diesen Verzeichnissen (beginnend mit "Unter...") liegt jeweils eine Datei Testdatei.tmp, die umbenannt werden soll in Testdatei.tmp.bak.

Anschließend soll eine neue Testdatei.tmp aus einer Netzwerkfreigabe in die vorherigen Verzeichnisse zurück kopiert werden.

Danke vorab und viele Grüße

Content-Key: 1566360608

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

Printed on: May 9, 2024 at 04:05 o'clock

Mitglied: 149569
Solution 149569 Nov 29, 2021 updated at 10:03:28 (UTC)
Goto Top
Und, wo ist das Probem?! Ich sehe keine Frage in deinem Beitrag ...
@echo off
for /f "delims=" %%a in ('dir /b /s /a-d "%appdata%\Test\Testdatei.tmp"') do (  
    if exist "%%a.bak" del "%%a.bak" >nul 2>&1  
    ren "%%a" "%%~nxa.bak"  
    copy "\\Server\share\Testdatei.tmp" "%%~dpa"  
)
Tutorial zur FOR-Schleife
Member: Hyper-P
Hyper-P Nov 29, 2021 at 09:40:13 (UTC)
Goto Top
Hallo,

danke für die freundliche Rückmeldung. face-wink

Der Teil in ('dir /b /s /a-d "%appdata%\Test\Testdatei.tmp"') müsste, falls das überhaupt möglich ist, durch Platzhalter erst einmal alle Unterverzeichnisse ermitteln, in denen eben diese Testdatei.tmp liegt.

Also wie in meinem Beispiel

%appdata%\Test\Unter_Test 1\
%appdata%\Test\Unter_Test Test\
%appdata%\Test\Unter_Test 23\

müsste dann in allen Unterverzeichnissen von \Test\ nach der Datei Testdatei.tmp gesucht werden, um diese dann umzubenennen UND durch die Datei aus der NW-Freigabe zu ersetzen.
Mitglied: 149569
149569 Nov 29, 2021 updated at 09:50:06 (UTC)
Goto Top
Zitat von @marius83:
Der Teil in ('dir /b /s /a-d "%appdata%\Test\Testdatei.tmp"') müsste, falls das überhaupt möglich ist, durch Platzhalter erst einmal alle Unterverzeichnisse ermitteln, in denen eben diese Testdatei.tmp liegt.
Macht er schon per Default durch den Parameter /s, probiers aus face-wink. "Dir" durchläuft so ausgeführt alle Unterverzeichnisse und sucht darin nach der Datei "Testdatei.tmp" ... Das sieht nur auf den ersten Blick so aus als würde er nur im oberen Verzeichnis danach suchen, ist aber nicht so er durchsucht trotzdem alle Unterverzeichnisse nach dem Bestandteil hinter dem letzten Slash.
müsste dann in allen Unterverzeichnissen von \Test\ nach der Datei Testdatei.tmp gesucht werden, um diese dann umzubenennen UND durch die Datei aus der NW-Freigabe zu ersetzen.
Macht der Code von oben schon alles, fix und foxy ...
Hättest du es zumindest mal ausprobiert dann wäre die Zwischenfrage überflüssig gewesen (aber war ja auch wieder keine Frage face-big-smile)
Member: Hyper-P
Hyper-P Nov 29, 2021 at 09:55:20 (UTC)
Goto Top
Ich hatte noch einen kleinen Fehler darin, daher hatte es nicht funktioniert. face-wink

Gute Sache mit dem "dir", hatte ich so noch nirgends implementiert. Danke für den Tipp.

Allerdings erhalte ich für den Teil des Umbenennens der .xml in .xml.bak einen Syntaxfehler. Das klappt irgendwie nicht. Dennoch wird die Datei aus der Freigabe erfolgreich hineinkopiert. Allerdings habe ich so kein Backup mehr von der ursprünglichen Datei. face-wink

Syntaxfehler.
1 Datei(en) kopiert.
Mitglied: 149569
149569 Nov 29, 2021 updated at 09:59:35 (UTC)
Goto Top
Allerdings erhalte ich für den Teil des Umbenennens der .xml in .xml.bak einen Syntaxfehler.
Sorry kleiner Typo ... oben korrigiert. Tatschphone Autokorrektur mal wieder der Übeltäter ...
Member: Hyper-P
Hyper-P Nov 29, 2021 updated at 10:06:34 (UTC)
Goto Top
Vielen Dank - das funktioniert einwandfrei! face-smile

Was sich hinter "%%~nxa.bak" verbirgt, muss ich mir noch mal genauer ansehen, da bin ich bisher nicht so fit...

PS: Das delmims= solltest Du in Deinem Beitrag vielleicht noch in delims= umbenennen, falls das noch ein anderer User verwenden wollen sollte. face-smile
Mitglied: 149569
149569 Nov 29, 2021 updated at 10:13:48 (UTC)
Goto Top
Zitat von @marius83:
Was sich hinter "%%~nxa.bak" verbirgt, muss ich mir noch mal genauer ansehen, da bin ich bisher nicht so fit...
for /? in die Konsole eintippen, da stehts ganz unten.
PS: Das delmims= solltest Du in Deinem Beitrag vielleicht noch in delims= umbenennen, falls das noch ein anderer User verwenden wollen sollte. face-smile
Done.