web-dev-qa-db-fra.com

Fichier de commandes pour créer un dossier basé sur la date et l'heure actuelles

nous avons un simple fichier batch qui crée une sauvegarde d'un dossier et ajoute la date et l'heure à la fin.

Nous l’utilisons de manière incrémentielle et génère un dossier tel que "data 28-04-13".

Je voudrais ajouter le temps à la fin de ceci, cependant mon code affiche le temps en tant que HH: MM, ce qui n’est pas valide pour un nom de dossier car il comporte un signe deux-points (:).

S'il vous plaît, quelqu'un pourrait-il modifier mon code pour supprimer le:, ou le remplacer par un ".".

Je vous remercie

@echo off & for /F "tokens=1-4 delims=/ " %%A in ('date/t') do (
set DateDay=%%A
set DateMonth=%%B
set DateYear=%%C
)

@echo off & for /F "tokens=1-4 delims=/ " %%D in ('time/t') do (
set DateTime=%%D
)

set CurrentDate=%DateDay%-%DateMonth%-%DateYear%-%DateTime%

md "F:\MobilePC\data %CurrentDate"

Répondu à ma propre question

C'était donc le moyen le plus simple pour moi:

set CurrentDate=%DateDay%-%DateMonth%-%DateYear%-%time:~0,2%.%time:~3,2%

Quelles sorties "31-10-13-11.35"

13

Les quatre premières lignes de ce code vous donneront des variables AAAA JJ MM AAAA AA HH Min Sec dans XP Pro et versions ultérieures.

Les variables de date et d'heure intégrées dans cmd sont configurables par l'utilisateur et ne sont donc pas fiables pour les fichiers de traitement par lots généraux.

@echo off
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 "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause
17
foxidrive
rem replace : with .
set myTime=%time::=.%

rem remove cents of second
set myTime=%myTime:~0,-3%
7
MC ND

Vous pouvez définir la date et l’heure actuelles en procédant de la manière suivante ... Je l’utilise quotidiennement dans mon fichier de traitement par lots.

%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%

ouput: 

201509141639 ( 14th sept 2015 04:39 PM )
6
Nirav Dave

http://www.dostips.com/DtTipsStringManipulation.php

Lancez une recherche sur "Remplacer une sous-chaîne".

1
Code Monkey2
 setlocal
   set "time=%time::=%"
   rem check that date has / delimeter if not replace it for valid
   md %date:/=%_%time:~0,-3%
 endlocal
0
greg zakharov

Ce code crée un dossier nommé avec la date et l'heure actuelles et copie le contenu complet du dossier "D:\Tally Data" dans le dossier "08-10-2016 17 23". 

Il nécessite un dossier nommé "Tally Data" dans le lecteur D de votre ordinateur.

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

set time=%TIME:~0,2%" "%TIME:~3,2%

mkdir C:\%date:/=%" "%time%\Backup

xcopy "D:\Tally Data" C:\%date:/=%" "%time%\Backup /E /S /Q /Y
0
Harikrishnan