[MS-DOS] script de conversion date

Résolu/Fermé
Blue Boy Maxime Messages postés 64 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 8 juillet 2008 - 1 févr. 2006 à 11:23
 alf - 14 juil. 2009 à 13:33
Bonjour,

je viens d'écrire un script qui dans une fenetre MS-DOS de XP qui renverse le format d'une date. Le voici

set YYYYMMDD=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
echo %YYYYMMDD%

Ce script fonctionne très bien sur mon pc.

Si je vais sur un pc en windows 98 et MS-DOS 4.10 , rien ne s'affiche :(

Que puis-faire ?
Où trouver de la doc sur la programmation des scripts en ms-dos ?

Merci de votre aide.

A+

8 réponses

voila un ptit script si vous ca vous interesse...



@echo off
::***********************************************************
::* *
::* Creating New Directories in Date/Time Sequence *
::* Author Manarii *
::* Date : 16.09.2007 *
::* *
::* Purpose : *
::* This bath file will give the opportunity to *
::* the user to create a new file automatically *
::* with the actual date and he has just to enter *
::* the name of his file. *
::***********************************************************
echo.

:: get all value of the date separetly[year.month.day]
set year=%DATE:~6,4%
set month=%DATE:~3,2%
set day=%DATE:~0,2%

:: Ask for the name of the directory
echo Please enter the name of your new directory...
set /P dirname=%year%.%month%.%day%_

:: Creation of the new directory
md %year%.%month%.%day%_%dirname%
2
M&M Messages postés 5038 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 3 décembre 2009 667
1 févr. 2006 à 13:49
Les batch files de Dos et windows 98 ne comprennent pas la syntaxe actuelle. Et la variable %DATE% n'est pas dans l'environnement. A l'époque, c'était la croix et la bannière. J'utilise des scripts en awk ou en Perl, disponibles sous Dos.
Exemple en Perl:
#---- ACQUISITION DE LA DATE ET DE L'HEURE-----
  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  $mon++;
  $Year=($year>96)?1900+$year:2000+$year;
  $YMD=sprintf ("%4d-%s%d-%s%d", $year,($mon<10)?"0":"",$mon,  ($mday<10)?"0":"",$mday);
  $HH=sprintf("%2dh%s%d et %2d sec",$hour,($min<10)?'0':'',$min,$sec);
  print "Date : " $YMD $HH;

En awk (ftp://ftp.simtel.net/pub/simtelnet/msdos/txtutl/awk320.zip ) :
je crée un fichier temporaire et je le relis pour avoir la date courante, mais cela dépend du Country=033 dans le fichier Config.sys...
BEGIN { 
    TMP="TEMP.TMP"
    #print "Usage: awk -f date.awk"
    system ("dir /4 "TMP" > " TMP)
    for (i=1;i<8;i++) {
       getline < TMP
       if (i> 4 && NF>=5) {
         Date=$4; Time=$5
         close(TMP) 
         break
       }
     }
  close (TMP)
  system ("del "TMP)
  split(Date,DD,"\/")
  YMD=DD[3]DD[2]DD[1]
  print "Date: "YMD" "Time 
  exit
}
_ç_§:
(.)#(.)
0
M&amp;M Messages postés 5038 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 3 décembre 2009 667
1 févr. 2006 à 14:05
Enfin tu pourrais aussi t'intéresser à ce petit utilitaire DOS : Batchman sur http://short.stop.home.att.net/freesoft/batch2.htm#batchman
et à Fdate http://short.stop.home.att.net/freesoft/batch1.htm#date et http://www.ferg.org/fdate/index.html
_ç_§:
(.)#(.)
0
Blue Boy Maxime Messages postés 64 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 8 juillet 2008 18
2 févr. 2006 à 17:12
Salut,

j'ai préféré faire un programme en pascal à insérer dans un batch.
(pour ne pas insatller perl ou autre sur un serveur déjà bien chargé)

Le programme mydate2.pas retourne une chaine de ce type:

@set mydate=2006_02_02

Je l'insére dans le fichier batch que voici, pour insérer la date dans un la variable mydate pour créer un nouveau nom de fichier.
-------------------------------------
@echo off
mydate2 > toto.bat
call toto.bat
del toto.bat
copy b*.log b%mydate%.log
------------------------------------

je mets le fichier pascal: mydate2.pas que j'ai compilé avec freepascal.
-------------------------------
uses dos;

var a,m,j,jour,heure,min,sec,cent:word;

function leadingzeros(a : word) : string;
var aux : string;
begin
str(a,aux);
if a<10 then
aux := '0'+aux;
leadingzeros := aux;
end;

BEGIN
getdate(a,m,j,jour);
write('@set mydate=',a,'_',leadingzeros(m),'_',leadingzeros(j));
END.

-------------------------------



Merci à tous de vos réponses éclairantes.
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
M&amp;M Messages postés 5038 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 3 décembre 2009 667
3 févr. 2006 à 00:48
Oui, tu as bien fait. Ah, le pascal, c'est beau !
_ç_§:
(.)#(.)
0
merci, ca ma bien aider ton premier script
0
blue boy maxime
23 sept. 2007 à 17:50
merci beaucoup.
0
bonjour
excuser moi de vous déranger mais je ne sais pas comment passer d'un fichier msdos
a un fichier video 3gp compatible avec mon téléphone mobile
merci d'avance pour vos conseils
-2
cette dernière question ne veux rien dire... quand a moi, je recherches un powertool qui permettrai d'ajouter le contenu d'un .txt a une table access en interpréteur de commande
0