Skript Ordnerinhalt kopieren
Hallo,
habe beim umbenennen auf dem Server einen Fehler gemacht, daher gibt es nun in vielen Ordnern den Ordner "BHV" und "BHV (1)"
Ich wollte dies mit einem Skript wieder korrigieren, leider bin ich auch mit der Software RenameMaster gescheitert.
Aus Sicherheitsgründen wollte ich ein Skript erstellen, welches auf dem Serverlaufwerk prüft, ob es den Ordner "BHV" gibt, wenn "Ja", dann die Dateien aus "BHV (1)" in Ordner "BHV" kopieren.
Die Dateien liegen beispielhaft: Z:\Projekte\01 (dieser Ordner sind aufsteigend) \Gewerbe\
Hat jemand vielleicht eine Idee und Vorschlag, wie ich das Skript korrekt schreiben kann?
Danke im Voraus
Gruß Mats
habe beim umbenennen auf dem Server einen Fehler gemacht, daher gibt es nun in vielen Ordnern den Ordner "BHV" und "BHV (1)"
Ich wollte dies mit einem Skript wieder korrigieren, leider bin ich auch mit der Software RenameMaster gescheitert.
Aus Sicherheitsgründen wollte ich ein Skript erstellen, welches auf dem Serverlaufwerk prüft, ob es den Ordner "BHV" gibt, wenn "Ja", dann die Dateien aus "BHV (1)" in Ordner "BHV" kopieren.
Die Dateien liegen beispielhaft: Z:\Projekte\01 (dieser Ordner sind aufsteigend) \Gewerbe\
Hat jemand vielleicht eine Idee und Vorschlag, wie ich das Skript korrekt schreiben kann?
Danke im Voraus
Gruß Mats
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 581198
Url: https://administrator.de/forum/skript-ordnerinhalt-kopieren-581198.html
Ausgedruckt am: 10.04.2025 um 13:04 Uhr
7 Kommentare
Neuester Kommentar
Moin,
zum Testen habe ich jetzt keine Lust mehr.
Das Skript geht rekursiv alle Verzeichnisse durch und kopiert die Daten um. Funktioniert nicht, wenn in einem Ordner BHV(1) noch ein Ordner BHV(1) liegt. Dann muss das Skript mehrfach aufgerufen werden.
edit: bestehende Dateien werden überschrieben.
noch ein edit: Aufruf im Wurzelverzeichnis des Laufwerks (oder wo auch immer Du anfangen willst):
hth
Erik
zum Testen habe ich jetzt keine Lust mehr.
edit: bestehende Dateien werden überschrieben.
noch ein edit: Aufruf im Wurzelverzeichnis des Laufwerks (oder wo auch immer Du anfangen willst):
1
Pfad-zum-Skript . <-------Das ist ein Punkt! ;-)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
PARAM (
$dir
)
$subdirs = Get-ChildItem -Directory -Path $dir
if($subdirs) {
foreach($subdir in $subdirs) {
if(-not (Test-Path "BHV")) {
New-Item -ItemType directory -Name "BHV" -Path $subdir
}
if($subdir.name -eq "BHV(1)") {
$content_dirs = Get-ChildItem -Directory
foreach($content_dir in $content_dirs) {
Copy-Item $content_dir -Destination "$subdir\BHV" -Recurse -Force
Write-Output "$content_dir.fullpath nach $subdir.fullpath\BHV kopiert.\n"
}
}
search-recurse -dir $subdir
}
}
else {
Write-Output "$subdir.fullpath hat keine Unterverzeichnisse\n"
}
}
hth
Erik
Batch code:
Beachte: Kopieren ist nicht verschieben und erst recht nicht anschließend löschen
Aber davon hattest du auch nichts geschrieben.
Steffen
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
@echo off &setlocal
set "rootfolder=Z:\Projekte"
for /d %%i in ("%rootfolder%\*") do (
if exist "%%~i\Gewerbe\BHV" if exist "%%~i\Gewerbe\BHV (1)" (
robocopy "%%~i\Gewerbe\BHV (1)" "%%~i\Gewerbe\BHV" /e /r:0 /w:0
)
)
pause
Steffen
(das m ist als kryptisches Symbol dargestellt)
Lass mich raten, sieht so aus:´╗┐
Falls ja, hast du das Script in UTF-8 mit BOM gespeichert. Was du siehst ist das BOM wie es in Codepage 850 dargestellt wird.
https://de.wikipedia.org/wiki/Byte_Order_Mark
Öffne das Script mit dem Windows Editor (notepad.exe) -> Speichern unter -> Wähle im Dropdown von Codierung "ANSI" aus -> Speichern (überschreiben).
Steffen
Hallo Mats,
hmm möglicherweise. Hast du das Sever Share auf ein Netzlaufwerk gemappt oder nutzt du den rohen UNC Pfad?
Ungetestetes Workaround:
Verstehst du den Code um selbst auf Ursachenforschung gehen zu können, oder ist dir nicht klar wie er funktioniert?
Steffen
hmm möglicherweise. Hast du das Sever Share auf ein Netzlaufwerk gemappt oder nutzt du den rohen UNC Pfad?
Ungetestetes Workaround:
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
@echo off &setlocal
set "rootfolder=Z:\Projekte"
pushd "%rootfolder%"
for /d %%i in ("*") do (
if exist "%%~i\Gewerbe\BHV" if exist "%%~i\Gewerbe\BHV (1)" (
robocopy "%%~i\Gewerbe\BHV (1)" "%%~i\Gewerbe\BHV" /e /r:0 /w:0
)
)
popd
pause
Steffen