IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Rename date/heure et déplaçement


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance en informatique répartie et mobile
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant en alternance en informatique répartie et mobile

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut Rename date/heure et déplaçement
    Bonjour à toutes et à tous,

    Cela fait maintenant bientôt 3 ans que je trouve toutes les solutions à mes problèmes de prog sur google et notamment chez vous...

    Mais voilà aujourd'hui je me retrouve confrontés à un problème que je ne sais pas comment résoudre:

    Je dois réaliser une application pour smartphone permettant un transfert photo. (Les rageux diront mauvaise catégorie!).

    Cependant, les photos doivent être déplacées une fois leurs arrivées sur le serveurs réussies et renommées selon un format très précis. Et c'est là que je commence à coincer! Pour l'instant je gère le transfert de fichier, et j'arrive à récupérer une date et une heure (celle du moment de l'action alors que je veux celle de création du fichier) et à renommer le dit fichier.

    Pour résumer, je veux renommer toutes les photos d'un fichier au format: Toto.AAAAMMJJhhmmss.Tata.extension et ensuite (ou avant) les déplacer. Bien entendu j'accepte toutes les idées positives, je suis parti sur du batch mais peut-être n'est-ce pas la solution la plus appropriée..

    Niveau code je ne vois pas comment faire pour sélectionner tous les fichiers et les renommer d'un coup, et pour Tata qui sera en réalité un numéro de dossier saisi par l'utilisateur je n'ai aucune idée non plus. Enfin je vous laisse cogiter à mon problème si vous êtes motivés!

    Merci au minimum d'avoir pris le temps de lire et un merci chaleureux à ceux qui m'aideront!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    @echo off
    for /R "C:\Users\%username%\Google Drive" %%f in (*.*) do move "%%f" "F:\Photo\%%~nxf"
    exit
    rem ci dessus le deplacement qui fonctionne
     
    set hour=%time:~0,2%
    if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
    set min=%time:~3,2%
    if "%min:~0,1%" == " " set min=0%min:~1,1%
    set secs=%time:~6,2%
    if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
     
    set year=%date:~-4%
    set month=%date:~3,2%
    if "%month:~0,1%" == " " set month=0%month:~1,1%
    set day=%date:~0,2%
    if "%day:~0,1%" == " " set day=0%day:~1,1%
     
    set datetimef=Toto.%year%%month%%day%%hour%%min%%secs%
     
    echo datetimef=%datetimef%
     
    ren "C:\Users\%username%\Documents\test.txt" "%datetimef%.txt"
    rem ci dessus le code fait avec ce que je veux pour le renommage mais à l'instant t..
    
    @echo off
    dir /TC AlphaExp.20160121165227.txt | find "/"  > tmp.txt 
    
    FOR /F "tokens=1-4 delims=/ " %%i in (tmp.txt) do set datetmp=%%k%%j%%i
    
    del tmp.txt
    echo Fichier en date du %datetmp% 
    pause
    rem et ici j'arrive à récupérer la date mais pas l'heure souhaitee

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Si ton problème est de récuperer l'heure de création d'un fichier (avec les secondes) voici un moyen :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    forfiles /m TonFichier /c "cmd /c echo @ftime"
    que tu peux inclure dans une boucle FOR /f pour récupèrer chaque élément.

    Il y a d'autres moyen avec robocopy ou WMIC.


  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance en informatique répartie et mobile
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant en alternance en informatique répartie et mobile

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut
    Merci pour cette réponse rapide et efficace sachadee
    Ta ligne de code fonctionne bien, (bon elle renvoie la date de la dernière modification en réalité, mais dans mon cas de photos ça ne devrait pas poser de problèmes ) cependant il y a les 2 ptits points en séparateur des différentes unités et j'aimerais m'en débarasser, et pour mettre ensuite cette valeur dans une variable je n'arrive pas à faire marcher le set..
    Pour le for je présume qu'il ressemblera à celui que j'ai fais au début?
    Merci!

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Voici un exemple :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @echo off&cls
     
    setlocal enabledelayedexpansion 
     
    for /r %%a in (*.*) do (
      for /f "tokens=1-3 delims=:" %%b in ('forfiles /m "%%~nxa" /c "cmd /c echo @ftime"') do (
            set "$HHMMSS=%%b%%c%%d"
            echo %%~nxa =^> !$HHMMSS!"
      )
    )

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance en informatique répartie et mobile
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant en alternance en informatique répartie et mobile

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut
    Rebonjour sachadee,
    Merci pour la réponse encore une fois,
    J'ai donc essayé de retravailler un peu ton morceau de script et je l'ai adapté pour prendre la date en même temps.
    Cependant, j'arrive à récupérer les données aucun problème mais le stockage dans une variable n'a pas l'air de fonctionner.. Voilà l'extrait de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    @echo off&cls
     
    setlocal enabledelayedexpansion 
    
    
    for /r %%a in (*.*) do (
      for /f "tokens=1-3 delims=:" %%b in ('forfiles /m "%%~nxa" /c "cmd /c echo @ftime"') do (
            set "$HHMMSS=%%b%%c%%d"
            echo %%~nxa =^> !$HHMMSS!"
     )
    for /f "tokens=1-3 delims=/" %%i in ('forfiles /m "%%~nxa" /c "cmd /c echo @fdate"') do (
            set "$YYYYMMDD=%%k%%j%%i"
            echo %%~nxa =^> !$YYYYMMDD!"
     )
    set datetimef=AlphaExp.!$YYYYMMDD!!$HHMMSS!.Tata
    echo datetimef=%datetimef% 
    )
    rem Mis ici cela marche mais n'affiche les valeurs que pour le fichier dans les modifications sont les plus récentes
    rem set datetimef=AlphaExp.!$YYYYMMDD!!$HHMMSS!.Tata
    rem echo datetimef=%datetimef% 
    pause
    En espérant qu'une fois de plus tu puisses m'aider! Merci!

    EDIT: Ecrire echo !datetimef! pour l'affichage! Donc ça marche, je vais maintenant passer à la suite et envisager les prochains problèmes!

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance en informatique répartie et mobile
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant en alternance en informatique répartie et mobile

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut
    La suite des aventures,
    La récupération de la date et l'heure c'est bon!
    Le renommage en les utilisant, c'est pas bon! je n'arrive pas à les renommer tous d'un coup, le nom pourrais fonctionner j'arrive à l'afficher mais il ne s'écrit pas sur les fichiers.. Tout comme le déplacement j'ai un problème tout bête, si je met le script dans le dossier ou les fichiers sont il se retrouve déplacer aussi Du coup j'ai essayé de le mettre dans un autre répertoire mais visiblement il n'apprécie pas de se voir prendre un chemin forcé..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @echo off&cls
     
    setlocal enabledelayedexpansion 
    
    rem for /R "C:\Users\%username%\Google Drive" %%f in (*.*) do move "%%f" "C:\Users\%username%\Documents\test_rec\%%~nxf" 
    
    for /r %%a in (*.*) do (
    rem for /r %%a in (C:\Users\%username%\Google Drive) do (
      for /f "tokens=1-3 delims=:" %%b in ('forfiles /m "%%~nxa" /c "cmd /c echo @ftime"') do (
            set "$HHMMSS=%%b%%c%%d"
           rem echo %%~nxa =^> !$HHMMSS!"
     )
    for /f "tokens=1-3 delims=/" %%i in ('forfiles /m "%%~nxa" /c "cmd /c echo @fdate"') do (
            set "$YYYYMMDD=%%k%%j%%i"
          rem  echo %%~nxa =^> !$YYYYMMDD!"
     )
    set datetimef=AlphaExp.!$YYYYMMDD!!$HHMMSS!.Tata
    echo datetimef=!datetimef!
    )
    
    for /R "C:\Users\%username%\Google Drive" %%f in (*.*) do ren "C:\Users\%username%\Documents\Google Drive\%datetimef%.txt"
    
    rem for /R "C:\Users\%username%\Google Drive" %%f in (*.*) do move "%%f" "C:\Users\%username%\Documents\test_rec\%%~nxf" 
    
    pause

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/08/2004, 18h52
  2. [JDBC] manipulation des dates/heures en Java
    Par kurkLord dans le forum JDBC
    Réponses: 6
    Dernier message: 09/08/2004, 12h49
  3. [MySQL] Quel est le meilleur moyen de stocker une date/heure ?
    Par MiJack dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2004, 12h19
  4. BC6 inserer un enreg de type date/heure dans Access2003
    Par o_live dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/06/2004, 11h13
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo