BATCH Datei für die Erstellung mehrerer von Dateikopien verwenden und bestimmte Anzahl an Versionen behalten

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von stevez.

    BATCH Datei für die Erstellung mehrerer von Dateikopien verwenden und bestimmte Anzahl an Versionen behalten

    Servus!

    Ich bin gerade dabei, eine Backup-Routine in Form einer BATCH-Datei zu schreiben, welche aus einer Applikation heraus aufgerufen werden soll. Sie soll folgende Funktionen haben:
    1. Kopie aller Dateien (ohne Unterordner) eines in der Batch festgelegten Verzeichnisses
    2. Kopie in ein in der Batch vorgegebenes Verzeichnis
    3. Umbenennung der Backup-Dateien in yyyy_mm_dd_hh_mm_ss_%DATEINAME%
    4. Alte Backup-Dateien löschen, wenn mindestens X (in Batch festgelegt) neue Versionen kopiert wurden

    Aktuell kopiere ich einfach nur alle Dateien in das neue Verzeichnis und überschreibe die alten:

    Quellcode

    1. @echo off
    2. echo "Start des Backups von geänderten Dateien im WP-Pro Ordner am %date% um %time% Uhr"
    3. xcopy /D /I /Y /Z "z:\" "z:\BACKUP\"
    4. pause


    Kann mir da jmd bei der Ergänzung helfen? Kann man bei solch einem Befehl bei allen Dateien das Datum davor hängen, oder muss ich die Dateien einzeln in einer for-Schleife durchlaufen, umbenennen und kopieren?

    LG
    Hi,

    bis zum einschl. 2 Punkt alles easy. Einige Überlegungen:
    - Punkt 2: Backup-Ziel würd' ich als Variable zu beginn festlegen ganz oben: set backupziel=z:\backup\
    - Punkt 3: Umbenennung der Dateien kriegst du nur hin, wenn du die Dateien im Verzeichnis in einer Schleife durchgehst (for /f %%d in ('dir /b z:\') do echo %%d). Den neuen Dateinamen baust du dir über ne einfache Verknüpfung zusammen. %date:~6,4%_%date:~3,2%_%date:~0,2%_%%d ergibt dann eben (Beispiel heutiges Datum und wenn Dateiname "myfile.docx" ist) 2015_03_10_myfile.docx
    - Zeile 4: sollte nach /D nicht auch ein Datum kommen?
    - Punkt 4: wie willst du das denn erreichen?
    - Generell: das was du machst kann man nicht wirklich als Backup bezeichnen - ich mein', du sicherst du Daten auf dem selben physikalischen Datenträger -> somit kein Backup sondern nur redundante Daten die nicht sicherer sind als die die schon drauf liegen. Klingt das nicht irgendwie nach Mumpitz?


    Link :thumbup:
    Hello World
    Merci erstmal für die Antwort!

    Link schrieb:

    bis zum einschl. 2 Punkt alles easy. Einige Überlegungen:
    - Punkt 2: Backup-Ziel würd' ich als Variable zu beginn festlegen ganz oben: set backupziel=z:\backup\
    - Punkt 3: Umbenennung der Dateien kriegst du nur hin, wenn du die Dateien im Verzeichnis in einer Schleife durchgehst (for /f %%d in ('dir /b z:\') do echo %%d). Den neuen Dateinamen baust du dir über ne einfache Verknüpfung zusammen. %date:~6,4%_%date:~3,2%_%date:~0,2%_%%d ergibt dann eben (Beispiel heutiges Datum und wenn Dateiname "myfile.docx" ist) 2015_03_10_myfile.docx
    optimal, werde ich so machen!

    Link schrieb:

    - Zeile 4: sollte nach /D nicht auch ein Datum kommen?
    Wenn kein Datum angegeben wird, so werden nur Dateien kopiert, welche neuer sind als jene, die im Zielverzeichnis überschrieben werden. Macht bei der Umbenennung der Dateien dann keinen Sinn mehr ;)

    Link schrieb:

    - Punkt 4: wie willst du das denn erreichen?
    Wenn die Dateien nach Datum umbenannt werden kann ich es ja auch einfach so machen, dass alle Backup-Dateien, welche älter als einen Monat sind (siehe z.B. Dateinamen oder Dateiinfo) gelöscht werden. Ansonsten müsste man die Dateien sortieren, abzählen und ab einer bestimmten löschen ;) ist etwas aufwendig, ich weiß...

    Link schrieb:

    - Generell: das was du machst kann man nicht wirklich als Backup bezeichnen - ich mein', du sicherst du Daten auf dem selben physikalischen Datenträger -> somit kein Backup sondern nur redundante Daten die nicht sicherer sind als die die schon drauf liegen. Klingt das nicht irgendwie nach Mumpitz?
    Das "Backup" dient in erster Linie eher einer Versionshistorie, falls Daten aus Versehen unwiderruflich gelöscht werden. Das Zielverzeichnis des wirklichen Backups ist natürlich auf einem anderen Laufwerk / Rechner ;)



    EDIT: Habe es mit der Schleife realisiert und es funktioniert super! Nur werden Ordner ebenfalls mit DIR aufgelistet und als "Datei" in den Backup-Ordner kopiert - wie kann ich das denn umgehen?

    VG

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „stevez“ ()

    Wer es noch benötigt - es ist aufgrund der 2. For-Schleife kein schöner Code, aber ich habe das Erstelldatum der Datei nicht anders heraus bekommen... wer eine einfachere Version hat, bitte her damit ;)

    Dieser Code löscht alle .accdb-Dateien im Verzeichnis localBAK, welche älter als 7 Tage sind. Da nur Tage verglichen werden, werden ebenfalls größere Werte als +23 gelöscht (damit das Löschen monatsübergreifend funktioniert)

    Quellcode

    1. set /a loeschenAb=%date:~0,2%-7
    2. set /a loeschenAb2=%date:~0,2%+23
    3. set localBAK=%userprofile%\WP_Pro_BACKUP\
    4. REM Loeschen von alten Backup-Dateien...
    5. for /f "delims=" %%f in ('dir /b "%localBAK%*.accdb" ') do (
    6. for /f "tokens=1 delims=. " %%d in ('dir /t:c %localBAK%*.accdb /t:c^|findstr /i /l "%%f"') do (
    7. if %%d LEQ %loeschenAb% (
    8. echo %%f wird geloescht...
    9. del /f "%localBAK%%%f"
    10. )
    11. if %%d GEQ %loeschenAb2% (
    12. echo %%f wird geloescht...
    13. del /f "%netzwerkBAK%%%f"
    14. )
    15. )
    16. )

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „stevez“ ()

    Hi,

    ich würde vllt in Zeile 13 noch das schließende Anführungszeichen hinmachen und auch den Pfad in Zeile 18 in Anführungszeichen setzen.
    Und das mit /t:c in Zeile 9 soll so sein (Erstellungsdatum)? Ich frag nur wegen der Sinnhaftigkeit, weil das Datum vom letzten (Schreib-)Zugriff (entspricht glaub dann /t:w) mir irgendwie besser hierfür geeignet scheint. Quasi wenn in den letzten 7 Tagen nix an der Datei verändert oder gemacht wurde, dann löschen - und ansonsten behalten, weil sie ja (dadurch dass Änderungen vorgenommen wurden) aktuell ist und vielleicht noch weiter bearbeitet werden soll, d.h. die Datei könnte noch wichtig sein.

    Link :thumbup:
    Hello World

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Link“ ()

    stevez schrieb:

    in Form einer BATCH-Datei
    Warum Batch?
    Kannst Du nicht mit dem Studio programmieren?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Warum Batch?
    Kannst Du nicht mit dem Studio programmieren?
    Ist Visual Studio gemeint? Aktuelles Projekt befasst sich mit einer Access Datenbank, deren Daten in einer .accdb und nicht auf einem DB-Server gespeichert ist.

    Link schrieb:

    ich würde vllt in Zeile 13 noch das schließende Anführungszeichen hinmachen und auch den Pfad in Zeile 18 in Anführungszeichen setzen.
    Wird gemacht!

    Link schrieb:

    Und das mit /t:c in Zeile 9 soll so sein (Erstellungsdatum)? Ich frag nur wegen der Sinnhaftigkeit, weil das Datum vom letzten (Schreib-)Zugriff (entspricht glaub dann /tc:w) mir irgendwie besser hierfür geeignet scheint. Quasi wenn in den letzten 7 Tagen nix an der Datei verändert oder gemacht wurde, dann löschen - und ansonsten behalten, weil sie ja (dadurch dass Änderungen vorgenommen wurden) aktuell ist und vielleicht noch weiter bearbeitet werden soll, d.h. die Datei könnte noch wichtig sein.
    Stimmt schon, aber eigentlich werden die Dateien nicht mehr geändert, nachdem sie erstellt wurden. Wenn ein älterer Datenbestand benötigt wird, werden die Dateien sowieso direkt aus dem Backup heraus kopiert bzw. Informationen daraus entnommen, sodass sie danach eigentlich wieder irrelevant wären ;) ist glaube ich ansichtssache
    ich finde post#4 eiglich hochinteressant, dass man so komplizierte Sachen auch mit simpler Batch abhandeln kann.
    Leider verstehe ich einige Syntax-Elemente nicht, also was das % bedeutet, im gegensatz zu %%, und in % eingeschlossene Worte scheinen nochmal was zu bedeuten, und es scheint auch Schlüsselworte der Batch-Sprache zu geben.

    Und wie eine for-Schleife tickt ist mir auch noch unerfindlich.
    Mal heisst es for /f "delims=" %%f in
    Und ein andermal for /f "tokens=1 delims=. " %%d in

    ??

    Also in meinen Augen könnte eiglich auch ein nettes Tut werden.

    stevez schrieb:

    Ist Visual Studio gemeint?
    Ja.
    Um was für Dateien es sich handelt, ist hierbei völlig sekundär.
    @ErfinderDesRades Batch-Programmierung habe ich bereits vor Jahren aufgegeben, da kann man nicht ordentlich debuggen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @ErfinderDesRades

    Das %i ist die Variable in einem Schleifendurchlauf (wenn man es in der Eingabeaufforderung verwendet. In Batch-Dateien funktioniert es genauso, nur mit 2 Prozentzeichen vorn dran, also z.B. %%i. In Prozentzeichen eingeschlossene Namen sind Variablen. Deklaration: set var=value -> echo %var%.

    For-Schleifen sind bissl seltsam und nicht zu begreifen ohne einen Blick in die Hilfe:
    Spoiler anzeigen

    Führt einen Befehl für jede einzelne Datei für einen Satz von Dateien aus.

    FOR %Variable IN (Satz) DO Befehl [Parameter]

    %Variable Ein ersetzbarer Parameter bestehend aus einem einzelnen
    Buchstaben.
    (Satz) Ein Satz von mindestens einer Datei. Platzhalter sind zulässig.
    Befehl Befehl, der für jede Datei ausgeführt werden soll.
    Parameter Parameter und Optionen für den angegebenen Befehl.

    Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie %%Variable
    statt %Variable an. Beachten Sie die Groß-/Kleinschreibung bei Variablen-
    namen, %i und %I sind nicht identisch.

    Wenn die Befehlserweiterungen aktiviert sind, werden folgende
    Ergänzungen für den FOR-Befehl unterstützt:

    FOR /D %Variable IN (Satz) DO Befehl [Parameter]

    Wenn der Satz Platzhalter enthält, dann bezieht sich der FOR-Befehl
    auf Verzeichnisse und nicht auf Dateien.

    FOR /R [[Laufwerk:]Pfad] %Variable IN (Satz) DO Befehl [Parameter]

    Der FOR-Befehl wird ausgehend vom Verzeichnis [Laufwerk:]Pfad (als
    Stammverzeichnis) für jedes darunterliegende Verzeichnis ausgeführt.
    Wenn kein Verzeichnis nach der /R-Option angegeben ist, wird das aktuelle
    Verzeichnis verwendet. Wenn der Satz nur einen einzelnen Punkt als
    Zeichen (.) enthält, wird nur die Verzeichnisstruktur aufgelistet.

    FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter]

    Der Satz ist eine Folge von Zahlen von Start bis Ende und der
    angegebenen Schrittweite. So erstellt (1,1,5) die Folge 1 2 3 4 5 und
    (5,-1,1) erstellt die Folge (5 4 3 2 1).

    FOR /F ["Optionen"] %Variable IN (Dateiensatz) DO Befehl [Parameter]
    FOR /F ["Optionen"] %Variable IN ("Zeichenfolge") DO Befehl [Parameter]
    FOR /F ["Optionen"] %Variable IN (Befehl) DO Befehl [Parameter]

    oder, unter Verwendung der Option "usebackq":

    FOR /F ["Optionen"] %variable IN (Dateiensatz) DO Befehl [Parameter]
    FOR /F ["Optionen"] %variable IN ("Zeichenfolge") DO Befehl [Parameter]
    FOR /F ["Optionen"] %variable IN (`Befehl`) DO Befehl [Parameter]

    Der Dateiensatz besteht aus einem oder mehreren Dateinamen. Jede Datei
    wird geöffnet, gelesen und bearbeitet, dann wird mit der nächsten Datei
    des Satzes fortgefahren. Die Bearbeitung einer Datei erfolgt zeilenweise,
    jede einzelne Textzeile wird ausgewertet und in die entsprechenden Token
    (keinen oder mehrere) zerlegt. Die Befehle in der FOR-Schleife werden dann
    mit den Variablenwerten (d.h. den gefunden Zeichenfolgen bzw. Token)
    aufgerufen. Standardmäßig liefert "/F" den ersten, durch ein Leerzeichen
    getrennten Token von jeder Zeile in jeder Datei. Leerzeilen werden
    übersprungen. Das standardmäßige Verhalten bei der Analyse kann wahlweise
    durch den Parameter "Optionen" überschrieben werden. Dies ist eine
    Zeichenfolge in Anführungszeichen, welche mindestens ein Schlüssel-
    wort enthält, um verschiedene Parameter für die Analyse anzugeben. Diese
    Schlüsselwörter sind:

    eol=c - Gibt das Zeichen für Zeilenendekommentare an
    (nur eins).
    skip=n - Gibt die Anzahl der Zeilen an, die am Anfang einer
    Datei übersprungen werden.
    delims=xxx - Gibt einen Satz von Trennzeichen an. Diese ersetzen
    die Standardtrennzeichen TAB und Leerzeichen.
    tokens=x,y,m-n - Gibt an, welche Token von jeder Zeile an die
    FOR-Schleife weitergegeben werden.
    Das führt dazu, dass zusätzliche Variablen erstellt
    werden. Mit der Form m-n wird dabei ein Bereich vom
    m-ten bis zum n-ten Token angegeben. Wenn das letzte
    Zeichen ein Sternchen ist, wird eine zusätzliche
    Variable deklariert, die den verbleibenden Text
    dieser Zeile enthält.
    usebackq - Gibt an, dass die neue Semantik in Kraft ist,
    wobei eine Zeichenfolge in umgekehrten Anführungs-
    zeichen als Befehl ausgeführt wird und eine
    Zeichenfolge in Anführungszeichen ein literaler
    Befehl ist, der die Verwendung von doppelten
    Anführungszeichen um Dateinamen in Dateien-
    sätzen erlaubt.

    Einige Beispiele:

    FOR /F "eol=; tokens=2,3* delims=, " %i in (Datei.txt) do @echo %i %j %k

    Dadurch wird jede Zeile in der Datei "Datei.txt" ausgewertet, Zeilen
    die mit einem Semikolon beginnen werden ignoriert, für den 2. und
    3. Token jeder Zeile werden die Befehle in der FOR-Schleife ausge-
    führt. Trennzeichen sind Kommas und/oder Leerzeichen. In der FOR-
    Schleife wird der Ausdruck "%i" verwendet, um den 2. Token zu
    erhalten, "%j" für den 3. Token und "%k", um alle übrigen Token
    zu erhalten. Dateinamen, die Leerzeichen enthalten, müssen Sie
    innerhalb doppelter Anführungszeichen angeben. Dazu müssen Sie
    die Option "usebackq" verwenden. Andernfalls werden doppelte
    Anführungszeichen zur Definition eines auszuwertenden Literals ver-
    wendet.

    Dabei ist "%i" explizit deklariert, während "%j" und "%k" implizit
    durch die Option "tokens=" deklariert werden. Sie können bis zu
    26 Token durch diese Option angeben, vorausgesetzt, es wird da-
    durch nicht versucht, eine Variable mit einem Buchstaben größer als
    "z" zu deklarieren. Bedachten Sie, dass FOR-Variablen aus nur
    einem Buchstaben bestehen, Groß-/Kleinschreibung beachtet wer-
    den muss, dass sie global sind und nicht mehr als insgesamt 52
    gleichzeitig aktiv sein dürfen.

    Sie können den Befehl "FOR /F" auch direkt mit einer Zeichenfolge
    verwenden, indem Sie die Zeichenfolge in doppelten Anführungszei-
    chen als Dateiensatz zwischen den Klammern angeben. Diese Zei-
    chenfolge wird dabei als einzelne Zeile einer Datei betrachtet und
    ausgewertet.

    Schließlich können Sie den Befehl "FOR /F" auch verwenden, um
    die Ausgabe eines Befehls auszuwerten. Dazu geben Sie eine Zei-
    chenfolge in einfachen Anführungszeichen als Dateiensatz zwischen
    den Klammern an. Diese Zeichenfolge wird dabei als Befehlszeile
    betrachtet und von einer untergeordneten "CMD.EXE" ausgeführt.
    Die Ausgabe dieses Befehls wird dann wie eine normale Datei ausge-
    wertet. Das folgende Beispiel listet die Umgebungsvariablen im
    aktuellen Verzeichnis auf:

    FOR /F " usebackq delims==" %i IN (`set`) DO @echo %i

    Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
    Sie können jetzt folgende Syntax verwenden:

    %~I - Expandiert %I und entfernt alle umschließenden
    Anführungszeichen (").
    %~fI - Expandiert %I zu einem vollständigen Dateinamen.
    %~dI - erstellt nur den Laufwerkbuchstaben von %I.
    %~pI - erstellt nur den Pfad von %I.
    %~nI - erstellt nur den Dateinamen von %I.
    %~xI - erstellt nur die Dateierweiterung von %I.
    %~sI - erstellter Pfad enthält nur kurze Dateinamen.
    %~aI - erstellt die Dateiattribute von %I.
    %~tI - erstellt Datum und Zeit von %I.
    %~zI - erstellt die Dateigröße von %I.
    %~$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
    angegebenen Verzeichnisse und expandiert die erste
    gefundene Datei %I zu dem vollständigen Dateinamen.
    Wenn der Name der Umgebungsvariablen nicht definiert
    ist oder diese Datei bei der Suche nicht gefunden wurde,
    wird dieser Parameter zu einer leeren Zeichenfolge
    expandiert.

    Diese Parameter können auch miteinander kombiniert werden:

    %~dpI - erstellt den Laufwerkbuchstaben und Pfad von %I.
    %~nxI - erstellt den Dateinamen und die Dateierweiterung von %I.
    %~fsI - Expandiert %I zu einem vollständigen Namen, der nur
    kurze Dateinamen enthält.
    %~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
    angegebenen Verzeichnisse nach %I und erstellt den
    Laufwerkbuchstaben und Pfad der ersten gefundenen Datei.
    %~ftzaI - Expandiert %I zu einer Zeile, die der Ausgabe des DIR-
    Befehls entspricht.

    In den angegebenen Beispielen können %I und PATH durch andere gültige
    Werte ersetzt werden. Der Ausdruck %~ wird durch einen gültigen Variablen-
    namen für FOR abgeschlossen. Die Verwendung von Großbuchstaben für die Namen
    von Variablen, wie z. B. %I, macht diese Ausdrücke leichter lesbar und
    vermeidet Verwechslungen mit den eigentlichen Parametern.


    Also in meinen Augen könnte eiglich auch ein nettes Tut werden.

    Ja hab' ich auch schonmal drüber nachgedacht. Mal seh'n..


    Link :thumbup:
    Hello World
    Dabei geht es doch eigentlich viel einfacher per Batch das File Datum rauszukriegen.
    Ansatz:
    Gib mal im CMD-Fenster folgendes ein
    for /D %a in (c:\temp\*.*) do echo %a %~ta
    Bzw. falls du es in einer Batch-Datei verwenden willst, musst du die Prozente verdoppeln
    for /D %%a in (c:\temp\*.*) do echo %%a %%~ta

    ErfinderDesRades schrieb:

    Also in meinen Augen könnte eiglich auch ein nettes Tut werden.
    Ich muss mal nachschauen.
    Vor vielen Jahren hatte ich zu diesem Thema mal ein einwöchiges Seminar entwickelt.
    Vielleicht finde ich die Unterlagen noch.

    RodFromGermany schrieb:

    da kann man nicht ordentlich debuggen.
    Selbst dafür hatte ich mal eine Lösung.
    Einen Debugger für CMD, geschrieben in CMD.
    Es war eine Herausforderung, aber dabei habe ich CMD gelernt ;)

    Heute kann ich auch nur noch das Alltägliche.
    Auch die ganzen Microsoft-Admins arbeiten heute überwiegend mit PowerShell.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „petaod“ ()

    @RodFromGermany
    Ich würde viel lieber die gesamte Applikation, an welcher ich gerade arbeite (Bachelorarbeit), in .NET programmieren, was aus verschiedenen (teilweise rechtlichen Gründes innerhalb des Unternehmens / interne IT / Wartungsgründen) nicht möglich ist.

    @petaod
    Ich probiere das mal aus, thx
    Edit: funktioniert super :) Gibt es auch eine Möglichkeit, ohne For-Schleife direkt aus einer bestimmten Datei das Erstelldatum auszulesen? (Pfad als String vorhanden)

    stevez schrieb:

    teilweise rechtlichen Gründen
    Das ist aber sehr merkwürden.
    Was Bist Du für einer Fachrichtung in? ( :thumbsup: )
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    stevez schrieb:

    Technischer Informatiker
    Das ist sehr sehr unklar. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,

    @stevez @petaod
    Nette Lösung, gefällt mir gut, danke :)
    Ich hab das noch erweitert. Wenn man nur den Tag, oder Monat, oder Jahr, oder nur Datum oder nur Zeit braucht, kann man die entsprechenden stellen wieder rausextrahieren. ein Beispiel:
    for /f %a in ("%userprofile%\desktop\irgendeine-datei.txt") do set datetime=%~ta&echo %f:~0,2% ergibt zum Beispiel den Tag, 6,2 hingegen würde das Jahr bringen :)

    :thumbup:
    Hello World

    RodFromGermany schrieb:

    stevez schrieb:

    Technischer Informatiker
    Das ist sehr sehr unklar. ;(
    Was genau magst du denn wissen?

    @petaod @Link top, vielen Dank!


    Edit: was mache ich hierbei falsch? Erstellungsdatum wird leer ausgegeben (Batch-Datei):

    Quellcode

    1. for /f "delims=" %%f in ('dir /b "%netzwerkBAK%*.accdb" ') do (
    2. echo Erstellungsdatum von %%f: %%~tf
    3. )


    Edit: geht irgendwie nur, wenn man direkt die Datei im For-Statement anspricht, in der Ordner-Schleife läufts nicht..

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „stevez“ ()

    stevez schrieb:

    Was genau magst du denn wissen?
    Nix. Es ist unklar, dass Du als Informatiker-Werden-Woller Batch-Dateien programmieren musst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,

    also bei mir geht's.

    Quellcode

    1. @echo off
    2. cls
    3. for /f "delims=" %%f in ('dir /b "*.txt" ') do (
    4. echo Erstellungsdatum von %%f: %%~tf
    5. )
    6. pause


    Zeigt bei mir jetzt zum Beispiel 3 Textdateien und deren Datum hintendran (also 3 Zeilen Ausgabe).

    Link :thumbup:
    Hello World

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Link“ ()