Script zum Auflösen einer Ordnerstruktur und zurück gesucht
Hallo miteinander.
Ich bin auf der Suche nach einem Script, welches alle Dateien einer Ordnerstruktur in einen "Arbeitsordner" kopiert/verschiebt und nach einem externen Arbeitsschritt wieder zurück kopiert/verschiebt.
Mal als Beispiel:
1. Aus "d:\Aufträge\A_Beispiele\Unterbeispiele\eintest.a" wird "d:\Arbeitsordner\A_Beispi$Unterbe$eintest.a"
2. eine exe von uns verändert "A_Beispi$Unterbe$eintest.a"
3. "A_Beispi$Unterbe$eintest.a" wir zurück kopiert/verschoben nach "d:\Aufträge\A_Beispiele\Unterbeispiele\eintest.a"
Hat jemand von Euch eine Idee, wie ich das bewerkstelligen könnte?
Besten Dank vorab!
Ich bin auf der Suche nach einem Script, welches alle Dateien einer Ordnerstruktur in einen "Arbeitsordner" kopiert/verschiebt und nach einem externen Arbeitsschritt wieder zurück kopiert/verschiebt.
Mal als Beispiel:
1. Aus "d:\Aufträge\A_Beispiele\Unterbeispiele\eintest.a" wird "d:\Arbeitsordner\A_Beispi$Unterbe$eintest.a"
2. eine exe von uns verändert "A_Beispi$Unterbe$eintest.a"
3. "A_Beispi$Unterbe$eintest.a" wir zurück kopiert/verschoben nach "d:\Aufträge\A_Beispiele\Unterbeispiele\eintest.a"
Hat jemand von Euch eine Idee, wie ich das bewerkstelligen könnte?
Besten Dank vorab!
Please also mark the comments that contributed to the solution of the article
Content-ID: 322363
Url: https://administrator.de/contentid/322363
Printed on: October 7, 2024 at 01:10 o'clock
12 Comments
Latest comment
Powershell z.B.
Copy flat
und dann zurück mit
Copy back
Gruß
Copy flat
$source = 'd:\Aufträge'
$work = 'D:\Arbeitsordner'
# copy flat from source to work
gci $source -Recurse | ?{!$_.PSIsContainer} | copy-item -Destination {"$work\$($_.Fullname.Substring($source.length).replace('\','#'))"} -Force
Copy back
$source = 'd:\Aufträge'
$work = 'D:\Arbeitsordner'
# copy back to folder structure
gci $work | ?{!$_.PSIsContainer} | copy-item -Destination {"$source\$($_.Name.replace('#','\'))"} -Force
Hey,
wenn ich dich richtig verstanden habe (Batch):
Ich hab's getestet, aber teste selbst. Wenn es beim Kopieren einen Fehler gibt, stoppt das Script. Siehe auch xcopy.
Zeile 4 musst du mit deinem externen Befehl ersetzen.
Gruß, Endoro
wenn ich dich richtig verstanden habe (Batch):
@echo off
xcopy "d:\Aufträge\A_Beispiele\Unterbeispiele\eintest.a" "d:\Arbeitsordner\A_Beispi$Unterbe$eintest.a" /e /h /q /k /o /i || exit /b
rd /s /q "d:\Aufträge\A_Beispiele\Unterbeispiele\eintest.a"
echo Echse mach was!
xcopy "d:\Arbeitsordner\A_Beispi$Unterbe$eintest.a" "d:\Aufträge\A_Beispiele\Unterbeispiele\eintest.a" /e /h /q /k /o /i || exit /b
rd /s /q "d:\Arbeitsordner\A_Beispi$Unterbe$eintest.a"
Ich hab's getestet, aber teste selbst. Wenn es beim Kopieren einen Fehler gibt, stoppt das Script. Siehe auch xcopy.
Zeile 4 musst du mit deinem externen Befehl ersetzen.
Gruß, Endoro
Zitat von @websolutions:
@131381
Vielen Dank schon mal, das sieht sehr vielversprechend aus!
Ich muss zugeben, dass ich absoluter Anfänger in Sachen Powershell bin.
wenn ich dieses Skript Windows PowerShell ISE laufen lasse, dann erhalte ich den Fehler: "Copy-Item : Das angegebene Pfadformat wird nicht unterstützt." am Zeichen 57 der Zeile 4. Scheint der Parameter "destination" zu sein?
Läuft hier problemlos... vermutlich ist deine Powershell nicht aktuell,sollte mindestens PS3.0 sein@131381
Vielen Dank schon mal, das sieht sehr vielversprechend aus!
Ich muss zugeben, dass ich absoluter Anfänger in Sachen Powershell bin.
wenn ich dieses Skript Windows PowerShell ISE laufen lasse, dann erhalte ich den Fehler: "Copy-Item : Das angegebene Pfadformat wird nicht unterstützt." am Zeichen 57 der Zeile 4. Scheint der Parameter "destination" zu sein?
https://www.google.de/search?q=Windows+Management+Framework
Hier lüppt das sorry ...
Da wird eine deiner Dateien im Dateinamen eventuell irgendwelche Sonderzeichen haben.
Können wir hier ja nicht sehen was du da für Pfad und Dateinamen hast ...
Schreib mal:
Damit sollten die Ziel Pfade nur angezeigt werden. Dann solltest du den Fehler finden.
Da wird eine deiner Dateien im Dateinamen eventuell irgendwelche Sonderzeichen haben.
Können wir hier ja nicht sehen was du da für Pfad und Dateinamen hast ...
Schreib mal:
$source = 'd:\Aufträge'
$work = 'D:\Arbeitsordner'
gci $source -Recurse | ?{!$_.PSIsContainer} | %{"$work\$($_.Fullname.replace($source,'').Substring(1).replace('\','#'))"}
Ahh bei dir schlägt die Groß und Kleinschreibung von replace zu. Siehst du den Doppelpunkt nicht . Doppelpunkte sind nun mal illegale Zeichen im Pfad, außer im Laufwerksbuchstaben.
Habs oben mal angepasst.
Habs oben mal angepasst.