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.TXT
Dadurch 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.txt
mü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
%~n1
Erweitern 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.
%~x1
Erweitern 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.