CMD Script: Immer die neueste Datei 15 minuten schritt
Hallo Zäme
Ich habe ein kleines Problem. Ich hoffe es kann mir jemand helfen.
Ich müsse von einem Ordner wo mehre Dateien drin sind immer die neuest Datei kopieren. Es wird im 15 Minuten Takt eine neue Datei erstellt. Ich benötige immer von der neusten Datei eine Kopie.
Wie man Dateien kopiert weis ich. Doch es müsste immer die neuste sein.
merci
Gruess Yogi
Ich habe ein kleines Problem. Ich hoffe es kann mir jemand helfen.
Ich müsse von einem Ordner wo mehre Dateien drin sind immer die neuest Datei kopieren. Es wird im 15 Minuten Takt eine neue Datei erstellt. Ich benötige immer von der neusten Datei eine Kopie.
Wie man Dateien kopiert weis ich. Doch es müsste immer die neuste sein.
merci
Gruess Yogi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 264322
Url: https://administrator.de/forum/cmd-script-immer-die-neueste-datei-15-minuten-schritt-264322.html
Ausgedruckt am: 22.04.2025 um 09:04 Uhr
17 Kommentare
Neuester Kommentar
Hallo Yogibaer85, willkommen im Forum und Grüße in die Schweiz.
Teste folgendes:
Statt der ECHO Ausgabe sollte da natürlich dein Kopieren erfolgen.
Grüße
rubberman
Teste folgendes:
@echo off &setlocal
pushd "C:\Pfad mit deinen Dateien"
for /f "delims=" %%i in ('dir /b /a-d /od') do set "file=%%~fi"
popd
echo "%file%"
pause
Grüße
rubberman
Hallo Yogi,
meinst du damit, dass das Script remote (auf einem anderen Rechner) ausgeführt werden soll?
Dazu wirst du wohl PsExec benötigen. Mehr Hilfe kann ich aber kaum anbieten, da ich mich mit der Arbeit auf Netzwerken nicht auskenne.
Grüße
rubberman
meinst du damit, dass das Script remote (auf einem anderen Rechner) ausgeführt werden soll?
Dazu wirst du wohl PsExec benötigen. Mehr Hilfe kann ich aber kaum anbieten, da ich mich mit der Arbeit auf Netzwerken nicht auskenne.
Grüße
rubberman
Hallo Yogi,
ich kann mir vorstellen, was passiert. Wenn du beim PUSHD einen Netzwerkpfad (\\sever\share\...) angibst, dann wird temporär ein Netzlaufwek verbunden und mit POPD wieder getrennt. Verschiebe also mal das POPD nach den Kopiervorgang (aus Zeile 4 an das Scriptende), dann vermute ich, dass es läuft.
Grüße
rubberman
ich kann mir vorstellen, was passiert. Wenn du beim PUSHD einen Netzwerkpfad (\\sever\share\...) angibst, dann wird temporär ein Netzlaufwek verbunden und mit POPD wieder getrennt. Verschiebe also mal das POPD nach den Kopiervorgang (aus Zeile 4 an das Scriptende), dann vermute ich, dass es läuft.
Grüße
rubberman
Hey Fabian.
Also vorab - das ist kein Problem. Aber bevor ich dort einsteige, noch ein paar Tipps:
OK, zurück zum Thema. Das
Auf dein Beispiel bezogen, so:
Grüße
Steffen
Also vorab - das ist kein Problem. Aber bevor ich dort einsteige, noch ein paar Tipps:
PUSHD
wechselt das Arbeitsverzeichnis. Dort an den Pfad die Wildcard-Kombination*.*
anzuhängen, ist kontraproduktiv.- Wenn ein Batchcode am Ende angelangt ist, wird auch der Prozess beendet. Ein Label
:Ende
ist völlig unnötig. Wenn du den Prozess vorzeitig verlassen willst, kannst du entweder mitexit /b
arbeiten, oder du nutzt den Sprung zum virtuellen end of file Label mitgoto :eof
(wobei das Label selbst nicht im Code steht). - Wenn du einen Sourcecode im Forum postest, nutze bitte <code>...</code> Tags, damit es lesbar bleibt und
@
Zeichen und die Zeileneinrückung erhalten bleiben. Merci
OK, zurück zum Thema. Das
if
-Statement kennt auch das Schlüsselwort not
. Worauf ich hinaus will: Wenn das Startverzeichnis nicht existiert, dann beende den Batchprozess. Anderenfalls führe deine Kopieraktion aus.Auf dein Beispiel bezogen, so:
@echo off &setlocal
set "src=c:\start\"
set "dest=c:\Backup\"
if not exist "%src%" exit /b
pushd "%src%"
for /f "delims=" %%i in ('dir /b /a-d /od') do set "file=%%~fi"
echo "%file%"
del "%dest%*.*" /q
copy /y "%file%" "%dest%"
popd
Grüße
Steffen
neueste Datei (Änderungsdatum), auch von Subordner anzeigen:
@echo off
setlocal enabledelayedexpansion
set "currentScript=%~nx0"
set "newestFile="
set "newestDate=0"
for /f "delims=" %%i in ('dir /b /s /a-d /od') do (
set "file=%%~fi"
if /i not "!file!" equ "%~f0" (
set "fileDateTime=%%~ti"
if "!fileDateTime!" gtr "!newestDate!" (
set "newestDate=!fileDateTime!"
set "newestFile=!file!"
)
)
)
echo Newest file: "%newestFile%"
@echo off
setlocal enabledelayedexpansion
set "currentScript=%~nx0"
set "newestFile="
set "newestDate=0"
for /f "delims=" %%i in ('dir /b /s /a-d /od') do (
set "file=%%~fi"
if /i not "!file!" equ "%~f0" (
set "fileDateTime=%%~ti"
if "!fileDateTime!" gtr "!newestDate!" (
set "newestDate=!fileDateTime!"
set "newestFile=!file!"
)
)
)
echo Newest file: "%newestFile%"