2016-06-20 5 views
1

ich auf der Zeit, um die neueste Datei basierend zu kopieren versuchen basierend zu kopieren, habe ich versucht, die unten stehende Skript, aber es ist das Kopieren all Dateien nicht die neueste Datei:Wie die aktuelle Datei auf Zeit mit dem Batch-Skript

FOR /F %%I IN ('DIR "%FILE1%\CC*.txt" /B /O:-D /s') DO COPY %%I C:\Hyp\New\ 

Für ex .:

xyz1.txt -- 4:23 
xyz2.txt -- 4:25 
xyz3.txt -- 4:30 

Aber ich brauche nur die neueste Datei dh 4:30, kindly unterstützen (nicht alle Dateien) zu kopieren.

Antwort

1

Sie sind ziemlich nah. Anstatt innerhalb des Bodes der FOR Schleife zu kopieren, speichern Sie die Datei in einer Variablen (zB LATEST), die bei jeder Iteration überschrieben wird. Nachdem die Schleife beendet ist, wird die neueste Datei in der Variablen gespeichert, vorausgesetzt, Sie definieren die Sortierreihenfolge wie /O:D (älteste Datei zuerst aufgeführt).

Dies ist die feste Skript:

FOR /F %%I IN ('DIR "%FILE1%\CC*.txt" /B /A:-D /T:W /O:D /S') DO SET "LATEST=%%~I" 
COPY "%LATEST%" "C:\Hyp\New\" 

Ich habe den Filter /A:-D, um Dateien nur aufzuzählen (keine Verzeichnisse).
Außerdem fügte ich die /T Option hinzu, die es ermöglicht, das zu verwendende Dateidatum auszuwählen: state W für die letzte Änderung (Standard), C für die Erstellung oder A für den letzten Zugriff.

Verwandte Themen