Mit Windows Batch der kopierten Datei einen Datums-/Zeitstempel hinzufügen

Mit Windows Batch der kopierten Datei einen Datums-/Zeitstempel hinzufügen

Ich dachte, das wäre einfach, aber es scheint eine größere Herausforderung zu sein, als ich dachte.

Ich möchte, dass eine Datei mit einem angehängten Zeitstempel kopiert und eingefügt wird. Den Zeitstempel erhalte ich mit diesem Code:

set hournum=%time:~0,2%

if %hournum% gtr 9 (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s) else (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_0%time:~1,1%h%time:~3,2%m%time:~6,2%s)

Set FileAffected=%1
echo %FileAffected:~0,-1%%timeback%

FILE.TXTDadurch würde die DateiFILE.TXT_2015-03-05_11h56m32s

Aber natürlich möchte ich, dass esFILE_20150305_11h56m32s.TXT

Die Dateierweiterung kann eine beliebige Erweiterung oder Länge haben. Vielen Dank für jede Hilfe.

BEARBEITEN: FileAffected wird mit Anführungszeichen übergeben, also habe ich sie einfach mit ~0,-1 entfernt.

Ich habe Folgendes festgestellt:

FOR /f %%i IN (%FileAffected%) DO (
ECHO filename=%%~fi
ECHO fileextension=%%~xi
)

Wenn ich FileAffected echoe, erhalte ich den vollständigen Pfadnamen mit Leerzeichen. Wenn ich jedoch den Befehl FOR /F verwende, wird der Dateiname zurückgegeben, wobei alles nach einem Leerzeichen abgeschnitten wird. Selbst das Hinzufügen zusätzlicher Anführungszeichen zur Variable „%FileAffected“ im Befehl „IN“ behebt das Problem nicht, ebenso wenig wie das Hinzufügen von Anführungszeichen um fi oder xi.

Antwort1

Wie füge ich Datum und Uhrzeit als Suffix zu einem Dateinamen hinzu?

Verwenden Sie die folgende Batchdatei:

@echo off
set hournum=%time:~0,2%
if %hournum% gtr 9 (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s) else (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_0%time:~1,1%h%time:~3,2%m%time:~6,2%s)
echo %~n1%timeback%%~x1

Ausgabe:

F:\test>test file.txt
file_3/01_18h07m40s.txt

Wenn Ihr Dateiname beispielsweise Leerzeichen enthält, file with space.txtmüssen SieAnrufdie Batchdatei mit "„s“ um den Dateinamen herum, wie folgt:

F:\test>test "file with space.txt"
file with space_3/01_18h07m56s.txt

Parametererweiterungen

%~n1Erweitern Sie %1 zu einem Dateinamen ohne Dateierweiterung C:\utils\MyFile oder, wenn nur ein Pfad vorhanden ist (ohne abschließenden Backslash), zum letzten Ordner in diesem Pfad.

%~x1Erweitern Sie %1 nur in eine Dateierweiterung - .txt

QuelleBefehlszeilenargumente (Parameter)


Verwendung von „Anführungszeichen

Wenn ein einzelner Parameter Leerzeichen enthält, können Sie ihn dennoch als ein Element übergeben, indem Sie ihn in Anführungszeichen setzen – dies funktioniert gut bei langen Dateinamen.

Wenn ein Parameter verwendet wird, um einen Dateinamen wie diesen bereitzustellen:

MyBatch.cmd "C:\Program Files\My Data File.txt"

Diese Parameter sind:

%0 = MeinBatch

%1 = "C:\Programme\Meine Datendatei.txt"

QuelleSyntax: Escape-Zeichen, Trennzeichen und Anführungszeichen


Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • Parameter– Ein Befehlszeilenargument (oder Parameter) ist ein beliebiger Wert, der an ein Batch-Skript übergeben wird.
  • Syntax- Escape-Zeichen, Trennzeichen und Anführungszeichen.

verwandte Informationen