Jump to content

Empfohlene Beiträge

Hi,

 

leider habe ich noch nicht zu viel Erfahrung und wende mich mit folgendem Problem an euch:


Ich möchte mit Robocopy ein Script erstellen, welches Daten aus verschiedenen Quellen in ein Ziel kopiert. Soweit habe ich es auch fertig, aber es hapert an den Unterverzeichnissen

 

@echo off

setlocal enabledelayedexpansion
set tool=\Quelle1
set source=C:\Bilder\
set target=d:\Methoden\Bilder\
set Date=%date:~-4%-%date:~-7,2%-%date:~-10,2%

start /min robocopy %source% %target%\tool  /COPY:dt /E /R:2 /NP /TEE /LOG+:D:\Skripte\Log\%date%_quelle1.log

Im Quellverzeichnis gibt es folgende Unterverzeichnisse: C:\Bilder\2017\0000-0100\0051

Im Ziel soll es dann so aussehen: D:\Methoden\Bilder\2017\0000-0100\0051\Quelle1\

 

Bei meinem Script setzt er das "tool" aber an den Anfang und zwar so: D:\Methoden\Bilder\Quelle1\2017\0000-0100\0051\

 

Hat jemand eine Idee oder ein Lösungsansatz??

 

Viele Grüsse

Rico

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Wenn ich es weglasse, kopiert robocopy ja ganz hart nach dem Quell- und Zielverzeichnis von Quelle1, Quelle2 und Quelle3 in das selbe Verzeichnis. Ich vergas zu erwähnen, dass auf allen Quellen dieselbe Verzeichnisstruktur besteht und dass das Ziel ein Serverlaufwerk ist.

 

Beim weglassen kopiert er:
Quell: C:\Bilder\2017\0000-0100\0051 nach

Ziel: D:\Methoden\Bilder\2017\0000-0100\0051\     ...ohne ein Unterverzeichnis mit Quellenname anzulegen.

 

Alternativ ist es auch möglich die Quelle im Dateinamen einzubauen, wenn jemand eine Idee dazu hat.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Dann bau dir ein Script drum herum, welches z.B. alle Quellordner ausliest und Robocopy für jeden Ordner ausführt mit der Quelle dazu.

 

Weiterer Tipp: Nutze UNC Pfade statt gemountete Laufwerksbuchstaben.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

In Powershell:

$quelle = 'quelle1'
$src = 'C:\temp\src'
$dst = 'C:\temp\dst'

foreach($folder in (Get-ChildItem $src)){
   foreach($folder in (Get-ChildItem $folder.FullName)){
      foreach($folder in (Get-ChildItem $folder.FullName)){
         $srcPath = $folder.FullName
         "Src: $srcPath"
         $dstPath = $folder.FullName.replace($src,$dst)
         "Dst: $dstPath"
         $arg = "$srcPath $dstPath\$quelle /E ..."
         Start-Process -NoNewWindow -Wait -FilePath robocopy.exe -ArgumentList $arg
      }
   }
}

Die Robocopy Argumente müssen noch ergänzt werden. Für das Datum (des Logs) gibt es "get-date" mit entsprechenden Parametern / Formate.

  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Super .... vielen Dank dafür!!!!!!!!!!!!!!!!!!!!:thumb1::D

 

Es läuft. Bis auf den Pfad für das Logfile. Den erkennt Robocopy nicht mehr. Ohne Logfile gehts.

 

Neues Problem:

Ich habe ein Rechner mit XP. Da läuft das Skript nicht. Wahrscheinlich wegen fehlendem Powershell. Gibt es für XP eine Unterstützung oder kann man es so kompilieren, dass es "eigenständig" läuft?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

https://support.microsoft.com/en-us/help/968929/windows-management-framework-windows-powershell-2-0--winrm-2-0--and-bi

 

Quote

WinRM 2.0 and PowerShell 2.0 can be installed on the following supported operating systems:

...

  • Windows XP with Service Pack 3

Den Log Pfad musst du mit Powershell zusammenbauen. %date% gibt es da nicht. Für den Einstig.

$datum = get-date -Format 'yyyy-MM-dd_HH-mm'

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×