2017-07-17 4 views
0

Ich habe zwei Netzwerk-Laufwerke geteilt: sie können rufen: DRIVEA und DriveB.Batch-Skript eine Datei von einem Netzwerkfreigabe zu einem anderen basierend auf LastModified oder Erstellungsdatum kopieren

Es gibt zwei Dateien, die auf täglicher Basis an DRIVEA erzeugt werden, und ich möchte die neuesten Dateien auf DriveB/Folder1/dateiA und DriveB/Folder2/fileB jeden Tag kopieren.

Kann jemand bitte geben Sie mir Lösung, wobei ich die Dateien basierend auf Erstellungsdatum kopieren:

  1. Copy dateiA (Erstellungsdatum: 17. Juli) zu DriveB/Folder1
  2. Copy fileB (Erstellungsdatum: 17. Juli) zu DriveB/Folder2

Ich habe eine Lösung gefunden, aber es kopiert die Datei basierend auf dem "heutigen Datum".

SET [email protected] SET usernameDOMAIN=11111111 SET [email protected] net use "\\111.444.222.777\FOLDER" /USER:%usernameID% %password% /persistent:no set source=\\222.111.333.444\FOLDER\FOLDER2\Report_ net use "\\DOMAIN\storage\2012-0151_hms_ux\Hadoop\LiveDataLandingZoneDWH" /user:[email protected] [email protected] /persistent:no set dest=\\code1\storage\2012-0151_hms_ux\Hadoop\LiveDataLandingZoneDWH\Input\Report\Report_ for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x set today=%MyDate:~0,4%%MyDate:~4,2%%MyDate:~6,2% echo %today% :copy copy "%source%%today%0700.csv" "%dest%%today%0700.csv" IF ERRORLEVEL 0 goto disconnect goto end pause :disconnect goto end pause :end pause

EDIT 1:

Jetzt bin ich mit dem folgenden Befehl, um die Dateien auf dem Datum 16/Juli/2017 kopieren: xcopy C:\Users\Desktop\report\ActualHRC_*.csv C:\Users\Downloads /D:07-16-2017 pause

Wie kann ich die /D:m-d-y dynamisch bereitstellen ? Ich meine, die Variablen sollten die m, d und y aus dem System nehmen.

Vielen Dank im Voraus!

Antwort

1

Ich denke, Sie haben die Dinge viel zu kompliziert gemacht. Es gibt eine sehr einfache Lösung: xcopy /Y/D.

Wenn Sie nur xcopy /? eingeben, können Sie alle Optionen sehen. Für die Option /D heißt es:

Kopiert Dateien, die am oder nach dem angegebenen Datum geändert wurden. Wenn kein Datum angegeben wird, werden nur die Dateien kopiert, deren Quellzeit neuer ist als die Zielzeit.

Es gibt auch robocopy, die auch in Windows integriert ist, bietet noch mehr Möglichkeiten und ist angeblich der Lage, das Kopieren von Netzwerkfreigabe Netzwerkfreigabe UNC-Pfadnamen verwenden. (also, keine Laufwerkszuordnung erforderlich.)

+0

danke für die schnelle Antwort, ich werde es versuchen, jetzt –

+0

meine Quelle enthält Dateien wie: fileA_201707170070.txt, fileB_201707170070.txt. Aber hier wird es komplexer, der Zeitstempel im Dateinamen ändert sich irgendwann, er wird um eine Stunde oder zwei erhöht. Wie begegnet man dieser Komplexität? –

+0

Es ist am besten, Dinge so zu arrangieren, dass Sie nicht mit dieser Komplexität umgehen müssen. Dateien verfügen bereits über Attribute für die Erstellung/Änderung des Datums, sodass eine Duplizierung dieser Informationen im Dateinamen nur zur Vermeidung von Dateikollisionen nützlich ist. Für nichts anderes sollte man sich darauf verlassen.Der '/ D'-Parameter von xcopy kopiert alle Dateien, die nicht im Ziel vorhanden sind. Wenn sie existieren, werden sie nur kopiert, wenn sie ein neueres Datum haben. Wenn Sie alte Dateien vom Ziel entfernen, müssen Sie das Datum der letzten Entfernung speichern und es in '/ D: m-d-y' verwenden. –

Verwandte Themen