Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Historiser des fichiers .txt en fonction de la date
Auteur Message
Répondre en citant
Message Historiser des fichiers .txt en fonction de la date 
Bonjour,

Informaticien sur gros système mais complètement novice en commande DOS !

Besoin :

Je reçois des fichiers .txt sur un serveur windows que je dois transférer et traiter sur un autre système.
Je souhaite les historiser après traitement.

Voici ce que je souhaiterais que ce .cmd fasse :

Variables :

AAAA=Année (2017)
MM=Mois (02)
JJ=Jour (23)
H=Heure (16)
M=Minute (34)
S=Seconde (57)

1-Tester l’existence dans le répertoire "KLEE\EXPORT" des 2 fichiers "commande_entete.txt" et "commande_ligne.txt"
2-Si le fichier existe...
2.1-Tester l'existence du répertoire "AAAA" (2017) sinon le créer
2.2-Tester l'existence du sous-répertoire "AAAA-MM" (2017-02) sinon le créer
2.3-Tester l'existence du sous-répertoire "AAAA-MM-JJ" (2017-02-23) sinon le créer
2.4-Tester l'existence du sous-répertoire " AAAA-MM-JJ--HhM'S'' " (2017-02-23--16h34'57'') sinon le créer
3-Déplacer les fichiers .txt vers ce dernier répertoire

Tout simplement !!!
Est-ce faisable dans une commande DOS (.cmd)

D'avance merci...
Et à charge de revanche dans mon domaine de (in)compétence...
Bonbon



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Historiser des fichiers .txt en fonction de la date 
Bonjour

Façon originale avec pushd/popd :
Code:
@Echo off
setlocal enabledelayedexpansion
set AAAA=2017
set MM=02
set JJ=23
set H=16
set M=34
set S=57

2>nul cd KLEE\EXPORT || (
    echo Erreur
    pause>nul
    goto :eof
)

if exist commande_entete.txt (
    if exist commande_ligne.txt goto :ok
)
echo Fichier manquants
pause>nul
goto :eof

:ok
set dirs="!AAAA!" "!AAAA!-!MM!" "!AAAA!-!MM!-!JJ!" "!AAAA!-!MM!-!JJ!--!H!h!M!'!S!'"

set p=.

for %%A in (%dirs%) do (
    pushd %%~A || (mkdir %%~A & pushd %%~A)
    set p=!p!\%%~A
) 2>nul

for %%A in (%dirs%) do popd

copy commande_entete.txt "%p%\"
copy commande_ligne.txt "%p%\"

echo Terminé !!
pause>nul


Façon compacte/simple :
Code:
@Echo off
setlocal enabledelayedexpansion
set AAAA=2017
set MM=02
set JJ=23
set H=16
set M=34
set S=57

2>nul cd KLEE\EXPORT || (
    echo Erreur
    pause>nul
    goto :eof
)

if exist commande_entete.txt if exist commande_ligne.txt goto :ok
echo Fichier manquants
pause>nul
goto :eof

:ok
set d=!AAAA!\!AAAA!-!MM!\!AAAA!-!MM!-!JJ!\!AAAA!-!MM!-!JJ!--!H!h!M!'!S!'
mkdir "%d%"

copy commande_entete.txt "%d%\"
copy commande_ligne.txt "%d%\"

echo Terminé !!
pause>nul


Voilà, bonne soirée Wink

EDIT: J'ai corrigé les erreurs de dernière minutes.




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Historiser des fichiers .txt en fonction de la date 
Un grand merci TSnake41 !!!

Mais pour te prouver mon niveau sur le sujet j'ai une question subsidiaire : Comment initialiser les variables avec l'année, le mois, le jour et l'heure du jour du traitement ?



Répondre en citant
Message Historiser des fichiers .txt en fonction de la date 
Pour initialiser une variable , c'est:
Code:
set <variable> = <contenu>





______________________________________________________
/-/
Skype
Répondre en citant
Message Historiser des fichiers .txt en fonction de la date 
J'ai bien compris Killer mais comment initialiser mes variables avec la date du jour ?
set AAAA=?
set MM=?
set JJ=?
set H=?
set M=?
set S=?



Répondre en citant
Message Historiser des fichiers .txt en fonction de la date 
Ah ok.
De base toutes ces infos sont contenus dans la variable time(heures,minutes,secondes) et date (année, mois, jour) donc il faut séparer les infos.
Code:

For /f "tokens=2-4 delims=/ " %%a in ("%DATE%") do (
    SET AAAA=%%c
    SET MM=%%a
    SET JJ=%%b
)
For /f "tokens=1-4 delims=/:." %%a in ("%TIME%") do (
    SET H=%%a
    SET M=%%b
    SET S=%%c
)

Il me semble que c'est ça , pas sur , ca fait longtemps que j'ai pas toucher du batch.




______________________________________________________
/-/
Skype
Répondre en citant
Message Historiser des fichiers .txt en fonction de la date 
KillerHP a écrit:
Code:

For /f "tokens=2-4 delims=/ " %%a in ("%DATE%") do (
    SET AAAA=%%c
    SET MM=%%a
    SET JJ=%%b
)


Pourquoi "tokens=2-4"? Shocked et l'ordre des tokens est CBA et non CAB
Code:
For /f "tokens=1-3 delims=/" %%a in ("%DATE%") do (
    SET AAAA=%%c
    SET MM=%%b
    SET JJ=%%a
)

Par ce que %date% est de la forme JJ/MM/AAAA même si parfois ça dépend de la configuration de l'ordi.




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :

Hugo7, sans faire exprès... a écrit:
Il conviendra de [...] supprimer le panneau de la liste des panneaux présente dans une variable liste dans la liste des variables.
Visiter le site web du posteur Skype
Répondre en citant
Message Historiser des fichiers .txt en fonction de la date 
Hello,

pour être generique (1 m´thode, il y en a plein):

Code:

for /f %%# in ('wMIC Path Win32_LocalTime Get /Format:value') do @for /f %%@ in ("%%#") do @set %%@
echo %day%
echo %DayOfWeek%
echo %hour%
echo %minute%
echo %month%
echo %quarter%
echo %second%
echo %weekinmonth%
echo %year%


Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Message Historiser des fichiers .txt en fonction de la date 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch