Rechercher : dans
Par :

[MS-DOS] script de conversion date

Dernière réponse le 14 jui 2009 à 13:33:07 Blue Boy Maxime, le 1 fév 2006 à 11:23:09 
 Signaler ce message aux modérateurs

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+ Blue Boy Maxime

Configuration: Windows XP Pro

Meilleures réponses pour « [MS DOS] script de conversion date » dans :
Télécharger Easy Date Converter VoirSi vous souhaitez avoir un outil permettant de calculer un intervalle de date, Easy Date Converter est le logiciel qu’il vous faut. Easy Date Converter est un programme qui vous permet d’effectuer des opérations calendaires comme le...
Fichier DAT VoirFormat DAT Un fichier DAT Un fichier .dat est un fichier de données (.DAT signifie data). En général, il s'agit d'un fichier binaire, créé par un programme et utilisable uniquement par ce programme, ce qui signifie qu'il n'est pas censé être ouvert...

1

M&M, le 1 fév 2006 à 13:49:19
  • +1

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
}
_ç_§:
(.)#(.)

Répondre à M&M

2

M&M, le 1 fév 2006 à 14:05:18

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
_ç_§:
(.)#(.)

Répondre à M&M

3

Blue Boy Maxime, le 2 fév 2006 à 17:12:44

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+
Blue Boy Maxime

Répondre à Blue Boy Maxime

4

M&M, le 3 fév 2006 à 00:48:32

Oui, tu as bien fait. Ah, le pascal, c'est beau !
_ç_§:
(.)#(.)

Répondre à M&M

5

ICeman, le 16 mar 2007 à 22:38:33

Merci, ca ma bien aider ton premier script

Répondre à ICeman

6

ml_13, le 23 sep 2007 à 02:57:41

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%

Répondre à ml_13

7

blue boy maxime, le 23 sep 2007 à 17:50:53

Merci beaucoup.

Répondre à blue boy maxime

8

fcvb, le 30 déc 2007 à 18:41:16

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

Répondre à fcvb

9

 alf, le 14 jui 2009 à 13:33:07

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

Répondre à alf