rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Extraire la date avec Ms-dos

Posté par van', le jeudi 24 juillet 2003 à 09:55:15
bonjour,
je cherche a extraire la date du jour sous le dos, à la mettre sous la forme jj_mm_aaaa, et mettre le résultat obtenu dans une variable (qui me servira a ouvrir un fichier portant ce nom).
est ce que c possible ???????
Répondre à van'  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mirza, le jeudi 24 juillet 2003 à 10:36:26
date /T > date.txt


tu auras presque ce que tu souhaites dans le fichier date.txt:
jeu. 24/07/2003
Répondre à mirza

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
van', le jeudi 24 juillet 2003 à 11:33:04
Oui mais le problème c que je veux utiliser cette date pour nommer un fichier, alors les "/", c'est pas top !
Répondre à van'

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mirza, le jeudi 24 juillet 2003 à 11:54:49
tu programme en quoi ? DOS ? java ? C/C++ ? autre ?
Répondre à mirza

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
van', le jeudi 24 juillet 2003 à 11:56:05
En dos
Répondre à van'

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
van', le jeudi 24 juillet 2003 à 11:56:30
Où alors est ce qq1 sait comment renommer un répertoire avec la date du jour ????
Répondre à van'

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gringo, le jeudi 24 juillet 2003 à 13:07:07
dans tn fichier date.txt tu fais edition>chercher> et tu remplace "/" par "_"
Répondre à gringo

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mirza, le jeudi 24 juillet 2003 à 13:28:23
je pense qu'il souhairterai le faire automatiquement depuis DOS (comme avec les command awk en Unix) mais en DOS à mon avis c'est mal barré ...
Répondre à mirza

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
van', le jeudi 24 juillet 2003 à 14:08:37
Il c'est Elle, mais bon c pas grave...
Bon bah si personne a d'idée je vais faire autrement....
Répondre à van'

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
poulpenstring, le mardi 21 octobre 2003 à 17:41:32
Bonjour,

pour effectuer ce que tu demande, il faut te servir des variables d'environnement dans ton fichier batch.

exemple toto.bat
rem*** affecter a la variable mon_fic un nom de fichier (et son chemin) comportant nommé de la maniere suivante jour.txt ***
set mon_fic = c:\dossier1\mesfichiers\%DATE:~0,-8%.txt

rem ** ecrire coucou dans le fichier **
echo coucou > %mon_fic%

pour faire varier la chaine de caractere, il faut jouer sur la partie "0,-8" de la commande...
0 = du premier caractere
-8 = sauf les 8 derniers

tu pourras trouver les differente façcons de formater la date en tapant la commande sous dos : set /help

Voila bon courage...
Répondre à poulpenstring

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ruxpin, le vendredi 31 octobre 2003 à 19:52:13
merci pour ce poste poulpenstring c'est exactement ce ke je cherchais merci encore.
ruxpin
Répondre à ruxpin

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mirza, le vendredi 14 novembre 2003 à 18:42:13
désolé ...

mirza
Répondre à mirza

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
toto, le mercredi 12 novembre 2003 à 12:09:41
J'ai essayé la manipulation sous Dos ca ne marche pas il me cré uun fichier %Date%.txt
kkun peut m'aider ?
Répondre à toto

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mbt, le vendredi 14 novembre 2003 à 15:12:12
va sur le site
http://www.chez.com/scudo/Faq/dos/
il y a la réponse..elle est puissante !
Ca créé une variable _d qui contient la date. Après il faut un peu maniper comme écrit plus haut pour en faire ce que tu veux.

Mbt
Répondre à mbt

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mbt, le vendredi 14 novembre 2003 à 15:14:04
command /e:2000 /c for %%i in (1 2) do prompt set _d=$d$_ | find "$" /v >{t}.bat
for %%c in (call del) do %%c {t}.bat
(en 2 lignes : la première commence par "command", la 2è par "for %%c")
Répondre à mbt

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zorti, le lundi 8 décembre 2003 à 20:24:55
J'ai essayé la méthode fournie par poulpenstring. Elle marche pour répondre à toto. Nous avons réalisé un *.bat

set mon_fic=d:\tes-%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.txt
echo tete> %mon_fic%

il génère un fichier tes-20031208.txt . Sous DOS en tapant help set
tu auras l'aide en ligne.
Zorti
Répondre à zorti

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
poulpenstring, le lundi 8 décembre 2003 à 20:46:55
Bonjour,

Une petite précision concernant le manip avec les dates... Je viens de remarquer que malheureusement selon le système d'exploitation les résultats sont différents, voir même non fonctionnels. Il s'agit bien sur du "dos" qui peut être diffèrent selon si vous êtes sous ... win95, win98, win98SE ou 2000 ou XP.

exemple sous 95 et certaines versions de 98 la fonction "date /T "ne fonctionne pas et il impossible d'avoir la date sans attente de réponse...(ce pourquoi le /T est fait je crois).

Bon de toute façon il y a toujours une possibilité, voir même de chercher sur le net des fonctions Unix qui fonctionnent sous ms/dos.

Bonne soirée
Répondre à poulpenstring

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
titom, le vendredi 9 janvier 2004 à 18:49:00
coucou tout le monde j'aimerais connaître quelques utilisations de dos pour programmer!
qu'est ce qu'on peut faire avec dos?
avez vous quelque programme?
Peut on créer un fichier exe avec dos?
merci d'avance pour vos réponse
bonne année a tous et bone continuation!
@+
tom
Répondre à titom

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
accueil@cabinet-castaldo.com, le vendredi 16 janvier 2004 à 19:35:59
Bonjour ;
Comment renommer par un .bat le ficher
e.txt en 12:59.txt
e.txt : fichier à renommer
12:59.txt : nom souhaité, 12:59 est l'heure courante
Ce serait fabuleux pour automatiser des sauvegardes...
Répondre à accueil@cabinet-castaldo.com

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eric, le mardi 20 avril 2004 à 11:57:12
Bonjour à tous :)

Je me suis servi de ce topic pour créer un batch de sauvegarde automatique.
Le fichier à sauvegarder sera renommé avec la date puis l'heure.

le code est le suivant :
rename "%userprofile%\bureau\FICHIER.xls" FICHIER.xls_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%_%Time:~-11­,-9%%Time:~-8,-6%%Time:~-5,-3%.xls


ce qui donne un fichier nommé :
FICHIER_20040420_114238.xls

Tout fonctionne à merveille de 10h00.00 jusqu'à 23h59.59 :))
Mais à partir du moment où le chiffre des dizaines (pour l'heure) passe à 0 (c'est à dire 00h, 01h, jusqu'à 09h), ça provoque une erreur :/

FICHIER_20040420_

Parce que la variable qui contient les dizaine est a moitié vide en fait ; elle est constituée de :
%Time:~-11,-10% => chiffre de dizaines
%Time:~-10,-9% => chiffre de unités
Quand il n y a pas de dizaine, ben il y a autre chose que 1 ou 2, mais quoi?

FICHIER_20040420_?14238.xls

Quel est ce caractère??

si je le sais, je peux le remplacer par 0 :

SET dizaine %Time:~-11,-10%
If %dizaine% == "caractere_inconnu" SET %dizaine% 0


Merci beaucoup de l'aide ou des conseils que vous pourriez m'apporter !
Répondre à eric

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eric, le jeudi 22 avril 2004 à 10:22:50
J'ai essayé de remplacer la variable en question : si elle ne contient ni 1 ni 2, je lui colle un 0 :)
mais je ne peux meme pas faire de test dessus... :(
au secours !!


@Echo off
SET dizaine=%Time:~-11,-10%
@echo  var originale : %dizaine%
IF %dizaine% == 1 goto fin
IF %dizaine% == 2 goto fin
SET dizaine=0
GOTO fin
:fin
@echo var apres test : %dizaine%
pause
Répondre à eric

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
poulpenstring, le jeudi 22 avril 2004 à 10:47:27
Bonjour,
Sous quel Os est tu ? j'ai testé ton batch, mais apparement le zero n'existe pas dans %time%, donc le premiere caractere est... soit les dizaine soit les unités (donc pas possible a tester). Je jeterais un coup d'oeil sur ton probleme. A mon avis il faudrait commencer par tester le nombre de caractere avant les : (deux points). comment ? a voir...

Bonne journée
Répondre à poulpenstring

22


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eric, le jeudi 22 avril 2004 à 11:36:01
Bonjour :)
j'utilise Win2k.

Donc, ce que tu me dis, c'est que quand je souhaite remplir la variable dizaine :
SET dizaine=%Time:~-11,-10%

elle contient soit 1 ou 2, soit elle n'est pas definie?
pourtant, quand j'affiche l'heure, il y a un "espace" :
_9:48
et pas
9:48
par contre quand je chercher à l'afficher elle toute seule, ça met effectivement une erreur je crois.

comment savoir ce qu'est ce fichu caractère? existe-t-il seulement? j'avoue que je suis franchement perdu, meme avec toute le bonne volonté du monde :/

je n'ai aucune idée de comment tester le nombre de caractère contenu dans une chaine :(

par contre, j'ai essayé un truc comme
if not defined set dizaine à 0

ça n'a point marché...


merci du coup de pouce :)
Répondre à eric

23


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Mbt, le jeudi 22 avril 2004 à 14:21:45
Salut,
Si vous voulez jouer avec les batch, essayez le site http://www.robvanderwoude.com/
Vous aurez tout sur tout.

A+
Répondre à Mbt

25


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
poulpenstring, le jeudi 22 avril 2004 à 18:31:10
Bonjour Mbt,

Effectivement ce site semble trés interressant... Donc a mettre immédiatement dans les Favoris. Merci

Bonne soirée
Répondre à poulpenstring

24


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
poulpenstring, le jeudi 22 avril 2004 à 17:18:58
Bon voila une voie...
essaye le batch suivant et modifie le en fonction de tes besoins...
surtout pour la creation du fichier, je ne me suis pas occupé de cette partie la...

c'est un peu tiré par les cheveux mais cela fonctionne...

______________________________________________________

echo off
rem *** mettre un zero devant lheure****
set wcontrol=%time:~0,1%
set wcontrol=A%wcontrol%B
echo %wcontrol%

if A1B==%wcontrol% goto OK
if A2B==%wcontrol% goto OK

:ZERO
echo 0%time:~1,10%.xls
goto fin

:OK
echo %time%.xls
goto fin



:FIN
echo on


______________________________________________________

Bon courage et tiens moi au courant
Répondre à poulpenstring

26


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
poulpenstring, le jeudi 22 avril 2004 à 18:40:52
Juste une info comme ca en passant... Le probleme avec les commandes SET - DATE et TIME c'est la "non portabilite" dans certains cas. En effet, comme je le dis un peu plus haut, un batch comportant ces commandes risque de ne pas fonctionner sous W95 ou W98 ou 2000 ou bien XP, tout dépend de la version DOS qui est embarquée.
C'est pourquoi l'idéal serait, a mon avis, d'utiliser plutot des petites fonctions (ou programme exe et com) trouvées dans le monde Unix ou a faire soit meme, qui seraient utilisable sur n'importe quelle plateforme.

Si vous avez des idées dans ce sens... Je suis preneur. Merci par avance.

exemple vardate.exe retournerait, selon ses parametres une variables sous differentes forme JJ_mm_aa ou bien HH_jj_mm ou bien encore LUN (pour lundi=) etc. etc. etc.
Répondre à poulpenstring

27


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eric, le lundi 26 avril 2004 à 11:30:55
Oufff à force de bricoler j'y suis arrivé :)
je propose le code suivant :

@Echo off
SET dizaine=A%time:~0,1%B 
if A1B==%dizaine% goto OK 
if A2B==%dizaine% goto OK 
:ZERO 
SET dizaine=0
goto fin 
:OK 
SET dizaine=%time:~0,1%
goto fin

:FIN 
rename "%userprofile%\bureau\fichier.xls" fichier_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%_%dizaine%%Time­:~-10,-9%%Time:~-8,-6%%Time:~-5,-3%.xls


MERCI beaucoup pour ton aide !!
et merci aussi pour l'excellent lien.
Bonne continuation :)
Répondre à eric

28


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
albert, le vendredi 11 juin 2004 à 18:15:49
bonjour,
sous Win98, cela fontionne pas.
Je desire renommer un fichier avec la date du jour.
Tout ceci executé ds un .bat

qqu'un a une idée?
Répondre à albert

29


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
yazul, le vendredi 18 juin 2004 à 14:30:37
Pour récupérer la date (ou l'heure), sans utiliser de fichier tmp :

for /F "tokens=1* delims=@" ('date /T') do set date=%%a
delims=@ permet de tout récupérer dans une seule variable
sinon, on peut utiliser plusieurs délimiteurs et récupérer les champs individuellement.

pour avoir des explications : help for


ne fonctionne que sous W/NT et supérieur (pas sous W98)
Répondre à yazul

31


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Tot, le jeudi 30 septembre 2004 à 12:01:24
Aaaaaaah enfin la solution qui marche sur mon système

Je commençais a désespérer ...

Merci Yazul
Répondre à Tot

30


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sousid, le vendredi 20 août 2004 à 15:46:12
j'ai une base de données en sql server et je voudrais ajouter des données dans ujn certain nombre de table mais étant en Access XP. en fait je lie des tables à la base sql server par ODBC.quelle sécurité doi_je mettre sur les tables afin que ceci soit possible.
Répondre à sousid

32


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Leblanc philippe, le vendredi 27 juillet 2007 à 10:31:32
Un petit exemple de ce que l'on peut faire pour XP/2000
(adaptable pour d'autres versions; extensible pour le calcul de la date de pâques...)
Copier/coller les lignes suivantes dans un fichier texte à adapter selon les besoins:
@echo off
REM ============================================================­==================================================
REM RECUPERATION DE LA DATE DE DERNIERE CLOTURE DES CAISSES D'UNE LISTE DONNEE
REM ------------------------------------------------------------­--------------------------------------------------
REM HISTORIQUE:
REM Création 26/05/2007 Philippe LEBLANC
REM Modification 28/05/2007 Philippe LEBLANC
REM Refonte du fait qu'en plannification de tâche aucune valeur n'est retournée par les sous-routines
REM ============================================================­==================================================
setlocal EnableDelayedExpansion
title RECUPERATION DE LA DATE DE DERNIERE CLOTURE DES CAISSES D'UNE LISTE DONNEE

REM ----- PARAMETRAGE -------------------------------------
set path=%path%;c:\progra~1\tivoli\lcf\bin\w32-ix86\tools

REM Version de windows
for /F "usebackq delims==" %%i in (`ver`) do set OSVER=%%i

REM Identifications windows XP et 2K
set USERADMIN=xxxxxxxxx
set ADMPASXP=yyyyyyyyy
set ADMPAS2K=zzzzzzzzz
set USERCAISSE=ttttttttt\CAISSE
set CAIPAS2K=uuuuuuuuu
set CAIPASXP=vvvvvvvvv

REM Fichier contenant la liste des caisses
set FichierCaisses=liste.csv
REM Fichier temporaire contenant la liste des caisses déjà traitées
set FichierTemp=liste.tmp
set Lecteur=C$
REM Répertoire de récupération
set Repertoire=winstore
set Chemin=%Lecteur%\%Repertoire%
REM Fichier ini
set FichierData=Transferts.ini

REM Récupération de la date et de l'heure
call :DateHeureSysteme
set Bissextile=0
set Semaine=0
set Journee=0
call :JourneeSemaineDate %Annee% %Mois% %Jour%
if "%Mois%" == "01" set NomMois=Janvier
if "%Mois%" == "02" set NomMois=Fevrier
if "%Mois%" == "03" set NomMois=Mars
if "%Mois%" == "04" set NomMois=Avril
if "%Mois%" == "05" set NomMois=Mai
if "%Mois%" == "06" set NomMois=Juin
if "%Mois%" == "07" set NomMois=Juillet
if "%Mois%" == "08" set NomMois=Aout
if "%Mois%" == "09" set NomMois=Septembre
if "%Mois%" == "10" set NomMois=Octobre
if "%Mois%" == "11" set NomMois=Novembre
if "%Mois%" == "12" set NomMois=Decembre
if "%Journee%"=="1" set NomJour=Lundi
if "%Journee%"=="2" set NomJour=Mardi
if "%Journee%"=="3" set NomJour=Mercredi
if "%Journee%"=="4" set NomJour=Jeudi
if "%Journee%"=="5" set NomJour=Vendredi
if "%Journee%"=="6" set NomJour=Samedi
if "%Journee%"=="7" set NomJour=Dimanche

REM Création du fichier log
set FichierLog=TransfertsIniCaisses_%aaaammjj%.log
echo %DateHeure% Debut de la récupération pour le %NomJour% >> %FichierLog%

REM Test de lancement sur présence du fichier contenant la liste des caisses
if not exist %FichierCaisses% (
echo %DateHeure% : Pas de récupération car le fichier contenant la liste des caisses %FichierCaisses% est absent. >> %FichierLog%
goto :SORTIE) else (echo.)
REM Test de lancement journalier selon le jour de la semaine
if "%NomJour%"=="Samedi" (
echo %DateHeure% : Pas de récupération planifiée le %NomJour%. >> %FichierLog%
goto :SORTIE) else (echo.)

REM Initialisation du fichier résultat
set FichierResultat=ResultatTransfertsIniCaisses_%aaaammjj%.txt
echo Caisse;DateCloture > %FichierResultat%

REM ----- BOUCLE ------------------------------------------
REM Boucle de lecture du fichier de la liste des caisses
f