Jump to content

Robocopy - Unterverzeichniss anhaengen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

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

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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?

Link zu diesem Kommentar

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'

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...