2017-07-31 12 views
0

Je souhaite créer un nouveau dossier dans le répertoire courant avec la date et l'heure actuelles et enregistrer la chaîne dans une variable pour enregistrer d'autres fichiers dans le répertoire.Création d'un nouveau dossier avec une variable avec une chaîne (date/heure)

C'est ce que j'ai essayé jusqu'ici.

For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) 
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b) 
set dirname /f = %mydate%_%mytime% 
mkdir "%dirname%" 

copy a.txt %dirname%/ 
copy b.txt %dirname%/ 
copy c.txt %dirname%/ 

La variable dirname contient le nom du dossier que je veux. Mais, je ne peux pas l'utiliser pour créer un répertoire et y copier des fichiers.

+1

double possible de [Comment puis-je obtenir datetime courant sur la ligne de commande Windows, dans un format adapté pour l'utilisation dans un filename?] (https://stackoverflow.com/questions/203090/how-do-i-get-current-datetime-on-the-windows-command-line-in-a-suitable-format) – aschipfl

+0

Le seul problème Je l'ai, je ne peux pas enregistrer la chaîne avec la date à une variable et l'utiliser pour créer un dossier et l'utiliser à nouveau pour copier plusieurs fichiers. – pnkjmndhl

+1

Ce n'est pas correct syntaxe par lots: 'set dirname/f =% mydate% _% mytime%' utiliser 'set" dirname =% mydate% _% mytime% "' Mais IMO vous devriez utiliser wmic pour obtenir un locale/utilisateur chaîne de date indépendante - il y a beaucoup d'exemples sur [SO]. Utilisez également une barre oblique inverse à la fin du dossier et non une barre oblique. – LotPings

Répondre

0

Je voudrais créer le fichier que je veux enregistrer les données par moi-même, puis, pour enregistrer la date et l'heure, je le ferais lorsque votre programme se termine (à condition que vous avez importé datetime):

finishtime = datetime.datetime.now() 
finishtime = finishtime.strftime('%Y-%m-%d %H:%M') 
filename.write(finishtime) 
filename.write('\n') 

La nouvelle ligne est juste pour que vous puissiez voir les heures séparément. Tu peux écrire autre chose si tu veux.

Est-ce que cela aide? Désolé pour être si en retard, j'ai dû prendre un appel téléphonique.

+0

Je cours un programme qui crée plusieurs sorties dans le dossier courant. Donc, juste pour garder une sauvegarde des résultats que je reçois lors de chaque exécution, je veux créer un dossier en utilisant la date/heure actuelle et enregistrer tous les fichiers. – pnkjmndhl

+0

Okay. Je vais vous donner la réponse dans le corps principal. – CodeMaster

+0

quelle langue utilisez-vous? Je ne suis pas familier avec ça. J'essaie de résoudre cela en utilisant un fichier batch. – pnkjmndhl

0

Avant de commencer à l'aide de Microsoft PowerShell, j'ai utilisé la technique suivante:

@set @_=1/* 
@echo off 
for /f %%a in ('cscript.exe "%~0" //e:jscript //i //nologo') do set dirname=%%a 
mkdir "%dirname%" 
copy a.txt "%dirname%" 
copy b.txt "%dirname%" 
copy c.txt "%dirname%" 
exit 
*/ 
var d = new Date(); 
WScript.echo(d.getYear().toString(10) 
      + '-' + ('0' + (d.getMonth() + 1).toString(10)).slice(-2) 
      + '-' + ('0' + d.getDate().toString(10)).slice(-2) 
      + '_' + ('0' + d.getHours().toString(10)).slice(-2) 
      + ('0' + d.getMinutes().toString(10)).slice(-2)); 
WScript.Quit(0); 
0
@Echo off 
For /f %%A in ('powershell -NoP -C "Get-Date -f \"yyyy-MM-dd_HHmm\""') Do Set "dirname=%%A" 
mkdir "%dirname%" 
copy a.txt "%dirname%\" 
copy b.txt "%dirname%\" 
copy c.txt "%dirname%\"