Comment concaténer des chaines dans un .BAT [DOS] - Programmation
Marsh Posté le 13-03-2002 à 12:19:34
tiré de : http://www.robvanderwoude.com/index.html
The PROMPT command has some usefull options, like $D and $T, that allow us to store the week day, current date and current time in environment variables, independent of the operating system's language!
The resulting environment variable is language dependent, though. So I added a routine to remove forward slashes (or any other FOR delimiter) from the DATE variable (which is then stored in the DATE2 variable), allowing the variable to be used in file names.
This technique to remove or replace forward slashes works in all DOS versions up to and including MS-DOS 6.22, PC-DOS 7 and OS/2 Warp 4's DOS box. It will not work in MS-DOS 7.*, which means the %DATE2% variable is useless in MS-DOS 7.*. However, the %DATE% and %TIME% variables are valid in all DOS versions, including MS-DOS 7.*.
@ECHO OFF
:: DateTime.bat
:: Set environment variables with currend Date, Time and DayOfWeek
:: Recursion
IF NOT "%3"=="" GOTO SecondTime
:: Create temporary batch file
> TEMPDTT1.BAT ECHO @PROMPT %0 $D $T
:: Do _N_O_T_ replace "COMMAND /C" with CALL in the next line
> TEMPDTT2.BAT COMMAND /C TEMPDTT1.BAT
TEMPDTT2
:SecondTime
DEL TEMPDTT?.BAT
SET DOW=%1
SET DATE=%2
SET TIME=%3
:: Remove forward slashes from DATE variable and store result in DATE2
IF EXIST DATE2.BAT DEL DATE2.BAT
SET DATE2=
:: Parse DATE variable and create temporary batch
:: file to recreate DATE without forward slashes
>> DATE2.BAT FOR %%A IN (/%DATE%) DO ECHO SET DATE2=%%DATE2%%%%A
CALL DATE2.BAT
DEL DATE2.BAT
je n'ai pas testé, donc probablement à adapter en fonction du langage de l'OS.
Ensuite quand la date et l'heure sont stockées dans des variable, il te suffira de les afficher en faisant :
echo %date% %heure%
(dans le batch, remplacer % par %%)
A+
Marsh Posté le 14-03-2002 à 10:28:34
J'ai pas réussi à le faire marcher.
il faut que je puisse afficher un message du genre :
"nous sommes le 14.03.2002 et il est 10.30"
Y a pas un truc simple pour y arriver?
Marsh Posté le 14-03-2002 à 10:31:16
je sais pas si ca repond bien a ta question mais sous dos il suffit de taper :
echo %DATE%--%TIME%
ca affiche :
jeu. 14/03/2002--10:31:17,39
Marsh Posté le 14-03-2002 à 10:36:37
Ben en fait, je suis sous NT4.
Et echo %DATE% n'affiche pas la date malheureusement mais seulement %DATE%.
Merci quand même.
Marsh Posté le 14-03-2002 à 10:39:02
sous win2k en ligne de commande ca marche nickel
comme le disais JPA si tu marque cette commande ds un .bat il faut doubler les % :
echo %%DATE%%-%%TIME%%
fdl a écrit a écrit : Ben en fait, je suis sous NT4. Et echo %DATE% n'affiche pas la date malheureusement mais seulement %DATE%. Merci quand même. |
Marsh Posté le 14-03-2002 à 10:52:31
je viens d'essayer et ça affiche chez moi :
%DATE--%TIME% losrque je mets %% au lieu de %
Marsh Posté le 14-03-2002 à 10:56:00
sous nt4 cette commande a l'air de passer :
date /t
time /t
donc pour le mettre dans un fichier ca doit etre un truc du style
date /t > fic.txt
time /t >>fic.txt
[jfdsdjhfuetppo]--Message édité par kayasax--[/jfdsdjhfuetppo]
Marsh Posté le 14-03-2002 à 11:01:23
oui tu as raison, mais comment faire pour les afficher sur une même ligne?
Marsh Posté le 14-03-2002 à 12:10:22
arghhh!!!
j'y suis presque mais j'arrive pas a prendre le 2eme champs du jour :
date /t>date.tmp
time /t>time.tmp
for /f %%a in (date.tmp) do for /f %%b in (time.tmp) do @echo %%a %%b >date.txt
pause
faut utiliser tokens a priori mais j'arrive pas a touver la bonne syntaxe
Marsh Posté le 14-03-2002 à 12:21:04
il y a plus simple :
set dattime=%date% %time%
dans le fichier bat sans %% on se demande pourquoi...
echo dattime
ou echo %date% %time%
L'utilisation du %% ou % est toujours aussi incompréhensible sous DOS !!!
A+
Marsh Posté le 14-03-2002 à 12:28:07
A y est je l'AI !!!
time /t>time.tmp
for /f "usebackq delims==" %%a in (`date /t`) do for /f %%b in (time.tmp) do @echo %%a
%%b >date.txt
pause
[jfdsdjhfuetppo]--Message édité par kayasax--[/jfdsdjhfuetppo]
Marsh Posté le 14-03-2002 à 17:49:24
kayasax, j'ai esasyé ton code (copier-coller, tout simplement), et il me retourne un erreur :
usebackq delims==" etait inattendu
et le fichier date.txt est vide.
Marsh Posté le 14-03-2002 à 18:18:01
supprime les sauts de ligne du copier coller si t'en as il faut que
for /f "usebackq delims==" %%a in (`date /t`) do for /f %%b in (time.tmp) do @echo %%a %%b >date.txt
soit sur la meme ligne dans ton batch
[jfdsdjhfuetppo]--Message édité par kayasax--[/jfdsdjhfuetppo]
Marsh Posté le 13-03-2002 à 10:49:25
Salut,
voilà je voudrais par exemple afficher la date et l'heure sur une meme ligne sur un fichier.
Est-ce que quelqu'un sait comment proceder?