OVH Cloud OVH Cloud

aide création batch dos

3 réponses
Avatar
nic.dudu
Bonjour,

Je voudrais faire un batch DOS qui permettrait de renommer un fichier
de style factur.txt en TAAAAMMJJ_factur.txt ou T = Lettre
AAAA = Année (2004)
MM = Mois (01)
JJ = Jour (23)
et ceci en récupérant la date du jour.
Ce batch sera lancé sous WIN98
Est-ce possible sous DOS ?
Merci pour vos futures réponses !!

Nico.

3 réponses

Avatar
Cyrille \cns\ Szymanski
> Bonjour,

Je voudrais faire un batch DOS qui permettrait de renommer un fichier
de style factur.txt en TAAAAMMJJ_factur.txt ou T = Lettre
AAAA = Année (2004)
MM = Mois (01)
JJ = Jour (23)
et ceci en récupérant la date du jour.
Ce batch sera lancé sous WIN98
Est-ce possible sous DOS ?
Merci pour vos futures réponses !!

Nico.




Avec un batch je ne pense pas que ce soit possible. cmd/command est
beaucoup moins expressif que ses amis unixiens. Par contre un programme
en ANSI C fait ça en quelques lignes :

En gros cela donne :

int main( int argc, char *argv[] )
{
char nomfichier[256];
tm *t;
time_t timer;
char lettre = 'T';

if( argc==1 ) {
printf("Vous devez entrer un nom de fichier");
exit(-1);
}

// Récupérer la date
timer = time(NULL);
t = localtime( &timer );

// générer le nom de fichier
sprintf( nomfichier, "%c%4d%02d%02d_%s",
lettre, t->tm_year+1900, t->tm_mon+1,
t->tm_mday, argv[1] );

// renommer le fichier
rename( argv[1], nomfichier );

return 0;
}


Enjoy !

--
_|_|_| CnS
_|_| for(n=0;b;n++)
_| b&=b-1; /*pp.47 K&R*/
Avatar
Patrick D.
On 25 Jan 2004 10:50:04 GMT, Cyrille "cns" Szymanski
wrote:

Bonjour,

Je voudrais faire un batch DOS qui permettrait de renommer un fichier
de style factur.txt en TAAAAMMJJ_factur.txt ou T = Lettre
AAAA = Année (2004)
MM = Mois (01)
JJ = Jour (23)
et ceci en récupérant la date du jour.
Ce batch sera lancé sous WIN98
Est-ce possible sous DOS ?
Merci pour vos futures réponses !!






ben si. ci-dessous un script qui tourne en NT4 en schédulé, en compte
System
A décortiquer et à adapter


@echo off
FOR /F " tokens=1 delims= " %%i IN ('date /t') do set joursem=%%i
FOR /F " tokens=2 delims= " %%i IN ('date /t') do set jourseman=%%i

rem *************** si test en direct dans une fenêtre la date est
inversée
rem *************** dans ce cas dévalider la 1ere ligne et valider la
seconde

FOR /F " tokens=2 delims=/" %%i IN ( "%jourseman%") do set jour=%%i
rem FOR /F " tokens=1 delims=/" %%i IN ( "%jourseman%") do set jour=%%i

rem echo %joursem% %jour% > C:Jobs"%jour%".lst

rem if "%joursem%" == "sam." goto FIN
rem if "%joursem%" == "sat" goto FIN
rem if "%joursem%" == "sat." goto FIN
rem if "%joursem%" == "dim." goto FIN
rem if "%joursem%" == "sun" goto FIN
rem if "%joursem%" == "sun." goto FIN

echo REMPLACE %jour% > C:JobsScript.txt
rem les lignes suivantes ont été supprimées


--
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *
* Donne un poisson à un homme, il aura à manger pour un jour
* Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
Avatar
Christian ASTOR
Patrick D. a écrit:

@echo off
FOR /F " tokens=1 delims= " %%i IN ('date /t') do set joursem=%%i



Ne marchera pas sous Win9x, puisqu'il y a de très nombreuses différences
entre les 2 interpréteurs de commandes Win9x/NT, notamment le parsing
"for /F.
(Win95cmd existait pour étendre command.com)
Sinon, on peut trouver sur Google divers ex faisant à peu près ce que
demande l'OP, mais ce sont des usines à gaz, et HS ici, et comme a dit
Cyrille, il est beaucoup + simple de le faire en C ou C++, voire WSH...