Extraire la date avec Ms-dos
Résolu/Fermé32 réponses
Bonjour,
une manière extrêmement simple d'obtenir la date système sous la forme JJ_MM_AAAA avec MS-DOS est en une seule ligne dans un batch est la suivante :
set ladate=%date:/=_%
Là on indique qu'il faut remplacer / par _
Vous pouvez exécuter %date:/=_% sous DOS et ça vous affichera bien la date sous la forme JJ_MM_AAAA
une manière extrêmement simple d'obtenir la date système sous la forme JJ_MM_AAAA avec MS-DOS est en une seule ligne dans un batch est la suivante :
set ladate=%date:/=_%
Là on indique qu'il faut remplacer / par _
Vous pouvez exécuter %date:/=_% sous DOS et ça vous affichera bien la date sous la forme JJ_MM_AAAA
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
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
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 :
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 :
Merci beaucoup de l'aide ou des conseils que vous pourriez m'apporter !
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 !
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
for /F "tokens=1,2 delims=;" %%i in (%FichierCaisses%) do (
REM Test de l'indicateur 'déjà traité' du fichier de la liste des caisses
if %%j==O (echo %%i;O >> %FichierTemp%) else (
REM Connection avec la caisse
net use \\%%i\ipc$ /user:%USERADMIN% %ADMPASXP% || net use \\%%i\ipc$ /user:%USERADMIN% %ADMPAS2K%
if ERRORLEVEL 1 (
echo %DateHeure% : %%i non connectée >> %FichierLog%
echo %%i;N >> %FichierTemp%) else (
REM Récupération de la date de dernière clôture de la caisse
call :DateClotureCaisse \\%%i\%Chemin%\%FichierData% %%i
)
REM Fin de connection avec la caisse
net use \\%%i\ipc$ /d
)
REM Fin du test de l'indicateur 'déjà traité' du fichier de la liste des caisses
)
REM Fin de la boucle de lecture du fichier de la liste des caisses
REM -------------------------------------------------------
REM Mise à jour du fichier de la liste des caisses
copy /Y %FichierTemp% %FichierCaisses%
REM Récupération de la date et de l'heure
call :DateHeureSysteme
:SORTIE
REM Message de log
echo %DateHeure% Fin de la récupération pour le %NomJour% >> %FichierLog%
REM Suppression des fichiers temporaires
@del /q /f %FichierTemp%
REM Fin du traitement principal
goto :EOF
REM ==============================================================================================================
REM ----- SOUS-ROUTINE ------------------------------------
:DateClotureCaisse
REM -------------------------------------------------------
REM Récupération de la date de dernière clôture de la caisse
REM paramètres: nom du fichier de données, nom de la caisse selon le format 'VEG'
REM
call :DateHeureSysteme
REM ----- BOUCLE ------------------------------------------
REM Boucle de lecture du fichier de données:
REM Recherche de la date attribuée à la clause 'DateDerniereCloture='
REM Initialisation de la variable 'DateCloture', nulle si la clause n'est pas trouvée
for /F "tokens=1,2 delims==" %%g in (%1) do (if %%g == DateDerniereCloture set DateCloture=%%h)
REM
REM Test de la variable 'DateCloture':
REM Ecriture dans le fichier résultat si la variable est renseignée
REM Mise à jour du fichier temporaire contenant la liste des caisses déjà traitées
if "%DateCloture%"=="" (
echo %DateHeure% : Echec lors de la lecture de la date de clôture de la caisse %2 >> %FichierLog%
echo %2;N >> %FichierTemp%) else (
echo %2;%DateCloture% >> %FichierResultat%
echo %2;O >> %FichierTemp%)
REM
REM ----- Fin de la sous-routine
goto :EOF
REM ----- SOUS-ROUTINE ------------------------------------
:DateHeureSysteme
REM -------------------------------------------------------
REM Récupération de la date et de l'heure système
REM selon la version de l'OS, Windows 2000 ou XP
if "%OSVER:~18,2%"=="XP" (
set Annee=%DATE:~6,4%
set Mois=%DATE:~3,2%
set Jour=%DATE:~0,2%
set Heure=%TIME:~0,2%
set Minutes=%TIME:~3,2%
set Secondes=%TIME:~6,2%) else (
if "%OSVER:~18,4%"=="2000" (
set Annee=%DATE:~11,4%
set Mois=%DATE:~8,2%
set Jour=%DATE:~5,2%
set Heure=%TIME:~0,2%
set Minutes=%TIME:~3,2%
set Secondes=%TIME:~6,2%))
if %Heure% LSS 10 set Heure=0%Heure:~1,1%
REM
set DateHeure=%Jour%/%Mois%/%Annee% - %Heure%:%Minutes%:%Secondes%
set aaaammjj=%Annee%%Mois%%Jour%
REM
REM ----- Fin de la sous-routine
goto :EOF
REM ----- SOUS-ROUTINE ------------------------------------
:JourneeSemaineDate
REM -------------------------------------------------------
REM Récupération des éléments de date tels que
REM le jour bissextile de l'année,
REM le quantième de la semaine de l'année,
REM le quantième du jour de la semaine
set yy=%1
set mm=%2
set dd=%3
set ly=0
set /a lx=%yy% %% 4
if %lx% EQU 0 set ly=1
set /a lx=%yy% %% 100
if %lx% EQU 0 set ly=0
set /a lx=%yy% %% 400
if %lx% EQU 0 set ly=1
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,Jd=153*m+2
set /a Jd=Jd/5+dd+y*365+y/4-y/100+y/400-32045
set /a y=yy+4798,Jp=y*365+y/4-y/100+y/400-31738,t=Jp+3,Jp=t-t%%7
set /a y=yy+4799,Jt=y*365+y/4-y/100+y/400-31738,t=Jt+3,Jt=t-t%%7
set /a y=yy+4800,Jn=y*365+y/4-y/100+y/400-31738,t=Jn+3,Jn=t-t%%7
set /a Jr=%Jp%,yn=yy-1,yn+=Jd/Jt,yn+=Jd/Jn
if %Jd% GEQ %Jn% (set /a Jr=%Jn%) else (if %Jd% GEQ %Jt% set /a Jr=%Jt%)
set /a diff=Jd-Jr,cw=diff/7+1,wd=diff%%7,wd+=1
if %cw% LSS 10 set cw=0%cw%
REM
set %Bissextile%=%ly%
set Semaine=%cw%
set Journee=%wd%
REM echo yyyy: [%yy%] mm: [%mm%] dd: [%dd%] wd: [%wd%] cw: [%Semaine%] ly: [%Bissextile%]
REM
REM ----- Fin de la sous-routine
goto :EOF
(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
for /F "tokens=1,2 delims=;" %%i in (%FichierCaisses%) do (
REM Test de l'indicateur 'déjà traité' du fichier de la liste des caisses
if %%j==O (echo %%i;O >> %FichierTemp%) else (
REM Connection avec la caisse
net use \\%%i\ipc$ /user:%USERADMIN% %ADMPASXP% || net use \\%%i\ipc$ /user:%USERADMIN% %ADMPAS2K%
if ERRORLEVEL 1 (
echo %DateHeure% : %%i non connectée >> %FichierLog%
echo %%i;N >> %FichierTemp%) else (
REM Récupération de la date de dernière clôture de la caisse
call :DateClotureCaisse \\%%i\%Chemin%\%FichierData% %%i
)
REM Fin de connection avec la caisse
net use \\%%i\ipc$ /d
)
REM Fin du test de l'indicateur 'déjà traité' du fichier de la liste des caisses
)
REM Fin de la boucle de lecture du fichier de la liste des caisses
REM -------------------------------------------------------
REM Mise à jour du fichier de la liste des caisses
copy /Y %FichierTemp% %FichierCaisses%
REM Récupération de la date et de l'heure
call :DateHeureSysteme
:SORTIE
REM Message de log
echo %DateHeure% Fin de la récupération pour le %NomJour% >> %FichierLog%
REM Suppression des fichiers temporaires
@del /q /f %FichierTemp%
REM Fin du traitement principal
goto :EOF
REM ==============================================================================================================
REM ----- SOUS-ROUTINE ------------------------------------
:DateClotureCaisse
REM -------------------------------------------------------
REM Récupération de la date de dernière clôture de la caisse
REM paramètres: nom du fichier de données, nom de la caisse selon le format 'VEG'
REM
call :DateHeureSysteme
REM ----- BOUCLE ------------------------------------------
REM Boucle de lecture du fichier de données:
REM Recherche de la date attribuée à la clause 'DateDerniereCloture='
REM Initialisation de la variable 'DateCloture', nulle si la clause n'est pas trouvée
for /F "tokens=1,2 delims==" %%g in (%1) do (if %%g == DateDerniereCloture set DateCloture=%%h)
REM
REM Test de la variable 'DateCloture':
REM Ecriture dans le fichier résultat si la variable est renseignée
REM Mise à jour du fichier temporaire contenant la liste des caisses déjà traitées
if "%DateCloture%"=="" (
echo %DateHeure% : Echec lors de la lecture de la date de clôture de la caisse %2 >> %FichierLog%
echo %2;N >> %FichierTemp%) else (
echo %2;%DateCloture% >> %FichierResultat%
echo %2;O >> %FichierTemp%)
REM
REM ----- Fin de la sous-routine
goto :EOF
REM ----- SOUS-ROUTINE ------------------------------------
:DateHeureSysteme
REM -------------------------------------------------------
REM Récupération de la date et de l'heure système
REM selon la version de l'OS, Windows 2000 ou XP
if "%OSVER:~18,2%"=="XP" (
set Annee=%DATE:~6,4%
set Mois=%DATE:~3,2%
set Jour=%DATE:~0,2%
set Heure=%TIME:~0,2%
set Minutes=%TIME:~3,2%
set Secondes=%TIME:~6,2%) else (
if "%OSVER:~18,4%"=="2000" (
set Annee=%DATE:~11,4%
set Mois=%DATE:~8,2%
set Jour=%DATE:~5,2%
set Heure=%TIME:~0,2%
set Minutes=%TIME:~3,2%
set Secondes=%TIME:~6,2%))
if %Heure% LSS 10 set Heure=0%Heure:~1,1%
REM
set DateHeure=%Jour%/%Mois%/%Annee% - %Heure%:%Minutes%:%Secondes%
set aaaammjj=%Annee%%Mois%%Jour%
REM
REM ----- Fin de la sous-routine
goto :EOF
REM ----- SOUS-ROUTINE ------------------------------------
:JourneeSemaineDate
REM -------------------------------------------------------
REM Récupération des éléments de date tels que
REM le jour bissextile de l'année,
REM le quantième de la semaine de l'année,
REM le quantième du jour de la semaine
set yy=%1
set mm=%2
set dd=%3
set ly=0
set /a lx=%yy% %% 4
if %lx% EQU 0 set ly=1
set /a lx=%yy% %% 100
if %lx% EQU 0 set ly=0
set /a lx=%yy% %% 400
if %lx% EQU 0 set ly=1
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,Jd=153*m+2
set /a Jd=Jd/5+dd+y*365+y/4-y/100+y/400-32045
set /a y=yy+4798,Jp=y*365+y/4-y/100+y/400-31738,t=Jp+3,Jp=t-t%%7
set /a y=yy+4799,Jt=y*365+y/4-y/100+y/400-31738,t=Jt+3,Jt=t-t%%7
set /a y=yy+4800,Jn=y*365+y/4-y/100+y/400-31738,t=Jn+3,Jn=t-t%%7
set /a Jr=%Jp%,yn=yy-1,yn+=Jd/Jt,yn+=Jd/Jn
if %Jd% GEQ %Jn% (set /a Jr=%Jn%) else (if %Jd% GEQ %Jt% set /a Jr=%Jt%)
set /a diff=Jd-Jr,cw=diff/7+1,wd=diff%%7,wd+=1
if %cw% LSS 10 set cw=0%cw%
REM
set %Bissextile%=%ly%
set Semaine=%cw%
set Journee=%wd%
REM echo yyyy: [%yy%] mm: [%mm%] dd: [%dd%] wd: [%wd%] cw: [%Semaine%] ly: [%Bissextile%]
REM
REM ----- Fin de la sous-routine
goto :EOF
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
poulpenstring
Messages postés
32
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
27 décembre 2010
33
30 juil. 2007 à 13:18
30 juil. 2007 à 13:18
Bravo et merci Philippe, pour cet exemple généreux en terme de code et de commentaires, auquel je m'empresse de faire un copier/coller en cas de besoin.
Bonne journée.
Bonne journée.
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
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
Salut,
Si vous voulez jouer avec les batch, essayez le site http://www.robvanderwoude.com/
Vous aurez tout sur tout.
A+
Si vous voulez jouer avec les batch, essayez le site http://www.robvanderwoude.com/
Vous aurez tout sur tout.
A+
poulpenstring
Messages postés
32
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
27 décembre 2010
33
22 avril 2004 à 18:31
22 avril 2004 à 18:31
Bonjour Mbt,
Effectivement ce site semble trés interressant... Donc a mettre immédiatement dans les Favoris. Merci
Bonne soirée
Effectivement ce site semble trés interressant... Donc a mettre immédiatement dans les Favoris. Merci
Bonne soirée
Oufff à force de bricoler j'y suis arrivé :)
je propose le code suivant :
MERCI beaucoup pour ton aide !!
et merci aussi pour l'excellent lien.
Bonne continuation :)
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 :)
poulpenstring
Messages postés
32
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
27 décembre 2010
33
9 avril 2008 à 11:26
9 avril 2008 à 11:26
Bon j'avais 2 minutes et 30 secondes devant moi...
Voici un exemple complet si l'on considere que tes fichiers sont sur C:\ et que tu les copies sur D:\
L'exemple est volontairement simpliste, tu peux éventuellement l'optimiser par des boucles ou autre étiquettes... (si tu en as envies)
set mon_fic=c:\bases_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.FIC
copy %mon_fic% d:\
set mon_fic=c:\bases_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.NDX
copy %mon_fic% d:\
set mon_fic=c:\histo_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.FIC
copy %mon_fic% d:\
set mon_fic=c:\histo_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.NDX
copy %mon_fic% d:\
set mon_fic=c:\reglem_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.FIC
copy %mon_fic% d:\
set mon_fic=c:\reglem_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.NDX
copy %mon_fic% d:\
(le tout dans un fichier.bat bien sur)
Bonne journée.
Voici un exemple complet si l'on considere que tes fichiers sont sur C:\ et que tu les copies sur D:\
L'exemple est volontairement simpliste, tu peux éventuellement l'optimiser par des boucles ou autre étiquettes... (si tu en as envies)
set mon_fic=c:\bases_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.FIC
copy %mon_fic% d:\
set mon_fic=c:\bases_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.NDX
copy %mon_fic% d:\
set mon_fic=c:\histo_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.FIC
copy %mon_fic% d:\
set mon_fic=c:\histo_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.NDX
copy %mon_fic% d:\
set mon_fic=c:\reglem_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.FIC
copy %mon_fic% d:\
set mon_fic=c:\reglem_%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%.NDX
copy %mon_fic% d:\
(le tout dans un fichier.bat bien sur)
Bonne journée.
poulpenstring
Messages postés
32
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
27 décembre 2010
33
10 avril 2008 à 13:49
10 avril 2008 à 13:49
Petite modif (plus rationnel et un peu plus propre)
set Wdatjour=%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%
copy c:\bases_%wdatjour%.FIC D:\
copy c:\bases_%wdatjour%.NDX D:\
copy c:\histo_%wdatjour%.FIC D:\
copy c:\histo_%wdatjour%.NDX D:\
copy c:\reglem_%wdatjour%.FIC D:\
copy c:\reglem_%wdatjour%.NDX D:\
voilou...
set Wdatjour=%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%
copy c:\bases_%wdatjour%.FIC D:\
copy c:\bases_%wdatjour%.NDX D:\
copy c:\histo_%wdatjour%.FIC D:\
copy c:\histo_%wdatjour%.NDX D:\
copy c:\reglem_%wdatjour%.FIC D:\
copy c:\reglem_%wdatjour%.NDX D:\
voilou...
awax2050
Messages postés
8
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
4 janvier 2018
8
6 févr. 2015 à 05:31
6 févr. 2015 à 05:31
Windows xp sp3
création d'un fichier batch pour compresser le fichier "c:\contact.doc" en "c:\contact.rar" et ajout de la date et heure système séparées par traits d'union au nom du fichier produit.
le résultat doit être comme : "c:\contact-20150206-071727.rar"
(le fichier créé le 06 février 2015 à 07 heure 17 minutes 27 secondes)
nombre de lignes sans les commentaires : 9 lignes
copier juste ce qui se trouve entre DEBUT et FIN
DEBUT
@echo off
rem la date système est sous la forme: 0 6 / 0 2 / 2 0 1 5
rem L'heure système est sous la forme: 0 7 : 1 7 : 2 7 , 3 7
rem les positions des caractères: 0 1 2 3 4 5 6 7 8 9 10
rem position 4 le 7 et 2, position 9 le 3 et 5, position 6 le 2 et 2 etc...
rem les séparateurs ":" et "/" et "," sont aux positions 2 et 5 et 8
rem ------- 1 extraction et affectation de la date à la variable amj -------
rem la date système sans les deux séparateurs "/" (date=06022015)
set amj=%date:~6,4%%date:~3,2%%date:~0,2%
rem amj=20150206 veut dire Année Mois Jour
rem ------- 2 extraction de time -------
rem extraire deux caractères à partir de position 0 (l'heure) dans la variable h
set h=%time:~0,2%
rem résultat h=07
rem extraire deux caractères à partir de position 3 (minutes) dans m
set m=%time:~3,2%
rem m=17
rem extraire deux caractères à partir de position 6 (secondes) dans s
set s=%time:~6,2%
rem s=27
rem ------- 3 condition de l'heure (de 00h à 09h) -------
rem si l'heure est inférieure à 10 donc remplacer le premier caractère vide par 0
rem et l'affecter à la variable h
if %h% lss 10 set h=0%h:~1,1%
rem ------- 4 affectation de l'heure en entier à la variable hms -------
rem concaténer les trois variables de time sans les deux séparateurs ":"
set hms=%h%%m%%s%
rem hms=071727
rem ------- 5 compression en rar -------
rem compression avec ajout de date et heure système
rem amj=20150206 et hms=071727
rar a -m3 -ep c:\contact-%amj%-%hms%.rar c:\contact.doc
rem résultat c:\contact-20150206-071727.rar
rem ------- 6 déplacement vers un lieu sure -------
rem déplacement du fichier produit vers disk dur externe à ce dossier E:\backup\
move c:\contact-%amj%-%hms%.rar E:\backup\
rem résultat E:\backup\contact-20150206-071727.rar
rem ------- 7 pause CCM Café_Chaud_Mérité -------
rem pause pour voir le résultat (Done)
pause
FIN
création d'un fichier batch pour compresser le fichier "c:\contact.doc" en "c:\contact.rar" et ajout de la date et heure système séparées par traits d'union au nom du fichier produit.
le résultat doit être comme : "c:\contact-20150206-071727.rar"
(le fichier créé le 06 février 2015 à 07 heure 17 minutes 27 secondes)
nombre de lignes sans les commentaires : 9 lignes
copier juste ce qui se trouve entre DEBUT et FIN
DEBUT
@echo off
rem la date système est sous la forme: 0 6 / 0 2 / 2 0 1 5
rem L'heure système est sous la forme: 0 7 : 1 7 : 2 7 , 3 7
rem les positions des caractères: 0 1 2 3 4 5 6 7 8 9 10
rem position 4 le 7 et 2, position 9 le 3 et 5, position 6 le 2 et 2 etc...
rem les séparateurs ":" et "/" et "," sont aux positions 2 et 5 et 8
rem ------- 1 extraction et affectation de la date à la variable amj -------
rem la date système sans les deux séparateurs "/" (date=06022015)
set amj=%date:~6,4%%date:~3,2%%date:~0,2%
rem amj=20150206 veut dire Année Mois Jour
rem ------- 2 extraction de time -------
rem extraire deux caractères à partir de position 0 (l'heure) dans la variable h
set h=%time:~0,2%
rem résultat h=07
rem extraire deux caractères à partir de position 3 (minutes) dans m
set m=%time:~3,2%
rem m=17
rem extraire deux caractères à partir de position 6 (secondes) dans s
set s=%time:~6,2%
rem s=27
rem ------- 3 condition de l'heure (de 00h à 09h) -------
rem si l'heure est inférieure à 10 donc remplacer le premier caractère vide par 0
rem et l'affecter à la variable h
if %h% lss 10 set h=0%h:~1,1%
rem ------- 4 affectation de l'heure en entier à la variable hms -------
rem concaténer les trois variables de time sans les deux séparateurs ":"
set hms=%h%%m%%s%
rem hms=071727
rem ------- 5 compression en rar -------
rem compression avec ajout de date et heure système
rem amj=20150206 et hms=071727
rar a -m3 -ep c:\contact-%amj%-%hms%.rar c:\contact.doc
rem résultat c:\contact-20150206-071727.rar
rem ------- 6 déplacement vers un lieu sure -------
rem déplacement du fichier produit vers disk dur externe à ce dossier E:\backup\
move c:\contact-%amj%-%hms%.rar E:\backup\
rem résultat E:\backup\contact-20150206-071727.rar
rem ------- 7 pause CCM Café_Chaud_Mérité -------
rem pause pour voir le résultat (Done)
pause
FIN
date /T > date.txt
tu auras presque ce que tu souhaites dans le fichier date.txt:
jeu. 24/07/2003
tu auras presque ce que tu souhaites dans le fichier date.txt:
jeu. 24/07/2003
dans tn fichier date.txt tu fais edition>chercher> et tu remplace "/" par "_"
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...
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...
J'ai essayé la manipulation sous Dos ca ne marche pas il me cré uun fichier %Date%.txt
kkun peut m'aider ?
kkun peut m'aider ?
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
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
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")
for %%c in (call del) do %%c {t}.bat
(en 2 lignes : la première commence par "command", la 2è par "for %%c")
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
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
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...
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...
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 !!
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
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
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
Bonjour :)
j'utilise Win2k.
Donc, ce que tu me dis, c'est que quand je souhaite remplir la variable dizaine :
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
ça n'a point marché...
merci du coup de pouce :)
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 :)
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
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
poulpenstring
Messages postés
32
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
27 décembre 2010
33
22 avril 2004 à 18:40
22 avril 2004 à 18:40
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.
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.
25 sept. 2017 à 22:43