it-swarm.com.de

So erstellen Sie einen Ordner mit Namen als aktuelles Datum in Batch-Dateien

Ich weiß nicht viel über die Windows BAT-Dateisyntax. Meine einfache Anforderung ist, einen Ordner an einem bestimmten Ort mit dem Namen als aktuellem Datum zu erstellen. Ich habe versucht, dies bei Google zu suchen, bekam aber keine gute Option. Gibt es eine Möglichkeit, dies zu tun?

32
Ramesh Soni

Versuchen Sie folgendes (ein Äquivalent zu bash back quotes):

for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a
mkdir %datestr%

Weitere Informationen finden Sie unter http://ss64.com/nt/for_cmd.html

17
mkdir %date:~-4,4%%date:~-10,2%%date:~7,2%
35

Schnell und schmutzig: Wenn Sie mit dem Datum leben können, das UTC statt lokal ist, können Sie Folgendes verwenden:

for /f "skip=1" %%d in ('wmic os get localdatetime') do if not defined mydate set mydate=%%d
md %mydate:~0,8%

Funktioniert in allen Sprachumgebungen. Nur bei XP und höher.

19
Joey

Sie müssen die '/' - Zeichen im Datum entfernen, bevor Sie sie in mkdir wie folgt verwenden können:

setlocal enableextensions
set name=%DATE:/=_%
mkdir %name%
13
Simon G.

Wenn Sie das mm-dd-yyyy-Format verwenden möchten, können Sie Folgendes verwenden: 

mkdir %date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%
8
jelde015
echo var D = new Date() > tmp.js 
echo D = (D.getFullYear()*100+D.getMonth()+1)*100+D.getDate() >> tmp.js 
echo WScript.Echo( 'set YYYYMMDD='+D ) >> tmp.js 
echo @echo off > tmp.bat 
cscript //nologo tmp.js >> tmp.bat 
call tmp.bat
mkdir %YYYYMMDD%
7
Simon G.

Dies hängt von den regionalen Einstellungen des Computers ab. Überprüfen Sie daher zuerst die Ausgabe des Datums mit dem Befehl Aufforderung oder durch ein Echo des Datums.

Erstellen Sie dazu eine Batchdatei und fügen Sie den folgenden Inhalt hinzu

echo %date%<br\>    
pause

Es erzeugt eine Ausgabe, in meinem Fall zeigt es Fr 05/06/2015.

Jetzt müssen wir den Schrägstrich (/) loswerden

Fügen Sie dazu den folgenden Code in die Batchdatei ein.

set temp=%DATE:/=%

wenn Sie die "Temp" wiederholen, können Sie das Datum ohne den Schrägstrich darin sehen.


Jetzt müssen Sie nur noch das Datum nach Ihren Wünschen formatieren.

Zum Beispiel brauche ich das Datum im Format JJJJMMTT, dann muss ich den Verzeichnisnamen wie folgt einstellen

Um zu erklären, wie das funktioniert, müssen wir den Wert von Temp vergleichen

Fr 05062015.

positionieren Sie nun jedes Zeichen mit Zahlen, die mit 0 beginnen.

Fr 0506201 5

01234567891011

Also für das Datumsformat, das ich brauche, ist 20150605,

Das Jahr 2015, in dem sich 2 auf dem 8. Platz befindet, wird also vom 8. bis 4. Platz 2015 ausmachen.

Der Monat 06, in dem sich 0 in der 6. Position befindet, wird also von der 6. Position bis zu 2 Plätzen 06 ergeben.

Der Tag 05, an dem sich 0 in der 4. Position befindet, wird also von der 4. bis zur 2. Stelle 05 ergeben.

Um das endgültige Format einzurichten, haben wir das folgende.

SET dirname="%temp:~8,4%%temp:~6,2%%temp:~4,2%"

Um dieses Datumsformat zwischen "Datum", "Monat" und "Jahr" um "-" oder "_" zu erweitern, können Sie es mit unten ändern 

SET dirname="%temp:~8,4%-%temp:~6,2%-%temp:~4,2%"

oder 

SET dirname="%temp:~8,4%_%temp:~6,2%_%temp:~4,2%"

Der endgültige Stapelcode wird also sein 

================================================== ====

@echo off<br\>    
set temp=%DATE:/=%<br\>
set dirname="%temp:~8,4%%temp:~6,2%%temp:~4,2%"<br\>
mkdir %dirname%<br\>

================================================== ====

Das Verzeichnis wird an dem Ort erstellt, an dem der Stapel ausgeführt wird.

6
nirmalraj17
for /F “tokens=1-4 delims=/ ” %%A in (‘date /t’) do (
    set DateDay=%%A
    set DateMonth=%%B
    set DateYear=%%C
)
set CurrentDate=%DateDay%-%DateMonth%-%DateYear%
md %CurrentDate%

Dadurch erhalten Sie einen neu erstellten Ordner mit dem heutigen Datum im Format DD-MM-YY

Von: ALIs Wissensdatenbank

5
Mark snow

Ich hatte ein Problem damit, weil mein Server UNBEDINGT sein Datum im Format MM/TT/JJJJ haben musste, während ich wollte, dass das Verzeichnis aus Gründen der Übersichtlichkeit im Format JJJJ-MM-DD ist. So erhalten Sie es im Format JJJJ-MM-DD, unabhängig von den regionalen Einstellungen.

Finden Sie heraus, was angezeigt wird, wenn Sie% DATE% verwenden:

Von einem Eingabeaufforderungstyp: 

ECHO %DATE%

Mine kam am 06.03.2013 heraus (wie am 6. März 2013)

Um einen Verzeichnisnamen als 2013-03-06 zu erhalten, geben Sie diesen Code in Ihre Batchdatei ein:

SET dirname="%date:~6,4%-%date:~0,2%-%date:~3,2%"
mkdir %dirname%
4
user2138753

Das sollte funktionieren:

mkdir %date%

Wenn dies nicht der Fall ist, versuchen Sie Folgendes:

setlocal enableextensions
mkdir %date%
3
Blorgbeard

Wenn Ihr Gebietsschema das Datumsformat "DDMMYYYY" hat, müssen Sie es folgendermaßen einstellen:

set datestr=%date:~-4,4%%date:~3,2%%date:~-10,2%
mkdir %datestr%
2
Marco

Ich sitze in genau demselben Boot wie Sie, sobald ich vor 10 Uhr morgens bin. Ich kann das unten nicht verwenden. Ich habe meine Zeit von 12 Stunden auf 24 Stunden eingestellt ich könnte finden. unten wird zumindest ein wenig helfen. Tweak und Fix :)

Unten kann auch helfen

set DD =% DATE: ~ 0,2%

set MM =% DATE: ~ 3,2%

set YY =% DATE: ~ 8,2%

setze JJJJ =% DATE: ~ 6,4%

set hh =% hh: = 0%

set mm =% TIME: ~ 3,2%

wenn "% time: ~ 0,1%" == "" (set folderdate = 0% time: ~ 1,1%) ELSE set folderdate =% time: ~ 0,2%

mkdir folderdate =% date: ~ 6 %% date: ~ 3,2 %% date: ~ 0,2% _% folderdate %% time: ~ 3,2%

kopie\Makereport * .CSV\Makereport \% folderdate% \

cd% folderdate% REM - (7Zip in c:\batch) Pfad = c:\batch

7z a Retail.Zip * .CSV -pRetailPassword

cD..

del * .csv

2
Bize32

Das funktioniert für mich, versuchen Sie:

ECHO %DATE:~7,2%_%DATE:~4,2%_%DATE:~12,2%
1

dies ist eine einfachere Lösung.

@ECHO OFF
set name=%date%
echo %name%
mkdir %name% 

Sie werden es mögen, ändern Sie es, damit es Ihren Anforderungen entspricht.

mkdir today
Copy Desktop\test1\*.* today
setlocal enableextensions
set name=%DATE:/=_%
Rename "today" _OlddatabaseBackup_"%name%"
1
James Carroll

der Ausdruck %date:~p,n% gibt n Anzahl von Zeichen von Position p in der Datumszeichenfolge zurück.

wenn meine Systemdatum-Zeichenfolge Mon23/11/2015 ist 

der Befehl % date: ~ 1,3% gibt den Wert Mon zurück

der Befehl % date: ~ 10,4% gibt den Wert 2015 zurück 

und in Verbindung mit dem Befehl md (oder mkdir) 

der Befehl md% date: ~ 10,4 %% date: ~ 7,2 %% date: ~ 4,2% erstellt ein Verzeichnis mit dem Namen 20151123 

ebenso, wenn Ihre Datumszeichenfolge im Format Montag, 23/Nov/2015 vorliegt 

der Befehl md% date: ~ 16,4 %% date: ~ 12,3 %% date: ~ 9,2% erstellt ein Verzeichnis mit dem Namen 2015Nov23 

Wenn Sie versehentlich Zeichen aus der Datumszeichenfolge zurückgeben, die in Ordnernamen nicht zulässig sind, oder ungültige Werte für p und n verwenden, wird eine Fehlermeldung angezeigt. Wenn Sie Werte zurückgeben, die\enthalten, wird möglicherweise ein Ordner in einem Ordner erstellt.

1
Leigh

Verwenden Sie dieses von mir erstellte Batch-Skript:

@echo off
title Folder Creator
color b
setlocal enabledelayedexpansion
echo Enter the folder name, you can use these codes:
echo /t - Time (eg. 16:29)
echo /d - Date (eg. 17-02-19)
echo /a - Day (eg. 17)
echo /m - Month (eg. 02)
echo /y - Year (eg. 19)
echo /f - Full Year (eg. 2019)
echo.
set /p foldername=Folder Name:
set foldername=%foldername:/t=!time:~0,5!%
set foldername=%foldername:/d=!date:~0,2!-!date:~3,2!-!date:~8,2!%
set foldername=%foldername:/a=!date:~0,2!%
set foldername=%foldername:/m=!date:~3,2!%
set foldername=%foldername:/y=!date:~8,2!%
set foldername=%foldername:/f=!date:~6,4!%
md %foldername%

Wenn Sie beispielsweise einen Ordner mit dem Namen Datum im Format DD-MM-YY erstellen möchten, geben Sie "/ d" ein. Wenn Sie dies jedoch in DD.) Tun möchten -MM-JJJJ Format Sie würden "/ a -/ m -/ f" eingeben.

0
Hayz

Ich brauchte sowohl das Datum als auch die Uhrzeit und benutzte:

mkdir %date%-%time:~0,2%.%time:~3,2%.%time:~6,2%

Welcher Ordner erstellt wurde, der so aussah: 2018-10-23-17.18.34

Die Zeit musste verkettet werden, da sie : enthielt, was unter Windows nicht zulässig ist. 

0
andre

https://stackoverflow.com/a/31789045/1010918 Die Antwort von foxidrive hat mir geholfen, den Ordner mit dem gewünschten Datum und der gewünschten Uhrzeit zu erhalten. Ich möchte diese Methode hier teilen, da sie für mich großartig war und ich denke, dass sie auch anderen Menschen helfen kann, unabhängig von ihrem Gebietsschema.

rem The four lines below will give you reliable YY DD MM YYYY HH Min Sec MS variables in XP Pro and higher.

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" & set "MS=%dt:~15,3%"

 set "dirname=%YYYY%-%MM%-%DD% %HH%-%Min%-%Sec%"

 :: remove echo here if you like
 echo "dirName"="%dirName%"
0
lowtechsun

Danke für die Info alles sehr hilfreich. Ich brauchte etwas, das "Backup" -Ordner jede Minute im selben Verzeichnis erstellen und später im Skript aufrufen konnte. Folgendes habe ich mir ausgedacht: 

@ echo off

CD %userprofile%\desktop

SET Datefolder="%DATE:~4,2%-%DATE:~7,2%-%DATE:~12,2%_%time:~1,1%%time:~3,2%"

MD "%Datefolder%"

Dies gibt mir einen Ordner auf dem Desktop des aktuell angemeldeten Benutzers mit dem Namen: mm-dd-yy_hmm (Stunde, Minute, Minute), dh: 07-28-15_719

0
pshopgeek