Générer le nom de fichier unique avec horodatage dans le script de traitement par lot
Dans mon .fichier bat, je veux générer un nom unique pour les fichiers/répertoires en fonction de la date-heure.
par exemple
Build-2009-10-29-10-59-00
Le problème est que %TIME%
de ne pas le faire parce qu'il contient des caractères illégaux dans le nom de fichier (par exemple,:
).
Est là quelque chose comme tr
dans des fichiers batch?
Toute autre idée comment résoudre ce problème (qui ne nécessitent pas extra utilitaires de ligne de commande de côté de le lot interprète)?
InformationsquelleAutor Assaf Lavie | 2009-10-29
Vous devez vous connecter pour publier un commentaire.
EDIT: UNE meilleure façon de le faire est de prendre une chaîne de date/heure que l'a définie et immuable format au lieu d'utiliser les paramètres régionaux définis à partir de
%date%
et%time%
. Vous pouvez utiliser ce qui suit pour obtenir:Il donne quelque chose comme
20120730203126.530000+120
et vous pouvez l'utiliser pour construire vos noms de fichier.(Ancien réponse ci-dessous)
Vous pouvez simplement remplacer la délinquance de caractère avec une chaîne vide:
La syntaxe
%var:str1=str2%
prend la variable d'environnement (ou pseudo-variable dans le cas de%TIME%
et remplacestr1
parstr2
. Si rien ne suit après le signe égal, puisstr1
est tout simplement supprimé.Dans votre cas particulier, je pense que vous voulez les suivantes:
Plus de force brute façon dans le cas où vous ne savez pas si les deux points sont utilisés (mais de l'ordre du temps serait le même):
Tous les précédents choses, cependant, supposons que vous utilisez standard de format de date ISO 8601, j'. e. 2009-10-29. Je suppose que ce que tout simplement normal, mais certaines personnes utilisent d'autres formats, alors soyez prudent. Mais puisque vous ne posez pas de questions sur la date, j'ai été en supposant que vous n'avais pas ce problème là.
tr
, peut-être, mais assez pour de nombreux besoins.for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined mydate set mydate=%%x
. Le format de date/heure dansmydate
ne va pas changer, c'est toujoursYYYYMMDDHHMMSS...
et vous pouvez couper jusqu'à votre goût.Suite sur @Joey et @Kees réponses afin de les rendre utilisables instantanément.
Sur la ligne de commande:
Dans un fichier BAT:
Exemple de sortie:
Je l'utiliser pour créer un nom de fichier unique pour l'exécution du fichier de commandes.
J'ai dû ajouter de la ligne
parce que j'ai eu le même problème où un vide a été entré avant 10 heures du matin, je reçois maintenant 09 au lieu de 9. J'ai aussi la réutilisation de l' %madate% et %mytime% variable pour les autres fichiers que je crée avec ce script, de sorte qu'ils ont tous le même horodatage.
Cette routine, en fait une seule ligne, fonctionne sur tout système réglé à une date ou le format de l'heure.
De sortie de la ligne 1 est en format 20140725095527.710000+120
Le véritable format de date/heure que vous avez besoin est déterminé de la ligne 2. Vous pouvez les mettre en forme comme vous le souhaitez.
Il suffit d'ajouter le résultant variable DateTime à votre nom de fichier ie. Filename_%DateTime%.journal
J'ai fait cet universel, fonctionne sur n'importe quel environnement où le format de date peut être différente.
Pour rendre le code dans l'exemple précédent travail, j'ai besoin d'ajuster légèrement. Je présume que c'est parce que mon PC est à l'aide d'un royaume-UNI de format de date. Pour revenir "2014-04-19" dans madate j'avais besoin:
Ci-dessous je l'ai collé mon script, et a fourni un exemple de la façon d'utiliser le nom de fichier
Espérons que cette aide!
Si vous pouvez garantie que la machine a une version de Python installée et accessible dans le système de
PATH
, vous pouvez utiliser cette solution:Cela permettra de mettre le local actuel ISO-8601(ish) date de représentation dans un
%TIMESTAMP%
variable et l'écho, à l'instar de la sorte:J'ai mis
replace(':', '-')
après laisoformat()
de sorte que la chaîne résultante peut être utilisé dans un nom de fichier ou de répertoire, depuis:
est interdit de caractère dans le système de fichiers Windows.