Changer de nom et de place

Bonjour,
Je voudrais faire un bat qui change le nom du fichier selon la date d'exécution du bat et aussi de le déplacer dans un autre fichier. Merci de bien vouloir m'aider.

2 réponses

  1. Modérateur
    Bonjour,

    Tu poses des questions... mais je n'ai pas l'impression que tu cherches vraiment avant.......

    Enfin bon..
    un truc du genre :
    @echo off
    for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
    set YYYY=%dt:~0,4%
    set MM=%dt:~4,2%
    set DD=%dt:~6,2%
    set HH=%dt:~8,2%
    set Min=%dt:~10,2%
    set Sec=%dt:~12,2%
    
    set stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%
    
    copy "c:\repertoire\ton_fichier.son_extension" "c:\autreRepertoire\ton_fichier - %stamp%.son_extension"
    

    0
    1. j'ai essayer chez moi
      ren "c: ..../image.bmp %date% %time%.bmp

      mais ça pas fonctionner
      0
    2. @philton5000C'est parce que %date% et %time% contiennent des caractères spéciaux, et les noms de fichiers ne peuvent pas en contenir.

      Si tu veux les utiliser, il faut d'abord les découper, comme Jordane te l'a montré.
      0
    3. ha ok merci
      0
  2. Bonjour,

    Je suis d'accord avec Jordane, tu ne te casses pas beaucoup la tête.

    Je suppose que ta demande a un rapport avec les photos prises par webcam.
    Voilà donc un script qui prend une rafale de (5) photos puis les déplace/renomme vers un dossier de destination :

    @echo off
    Mode con cols=50 lines=25
    Title Webcam
    setlocal enableextensions enabledelayedexpansion
    color 0A

    :: ---------------------------
    :: debut du programme
    :: ---------------------------

    set jour=!date:~6,4!!date:~3,2!!date:~0,2!
    set heure=!time:~0,2!h!time:~3,2!m!time:~6,2!s

    set source=le chemin vers le dossier qui contient CommandCam.exe
    set destination=%USERPROFILE%\Desktop\backup

    if not exist "%source%\CommandCam.exe" (exit /b 1)
    cd /d %source% || exit /b 1
    del /f /q "*.bmp" >nul 2>&1

    for /L %%A in (1,1,5) do (
    set num=000%%A
    set num=!num:~-4!
    echo. & echo photo %%A : en cours de prise ...
    CommandCam /filename face!num!.bmp /delay 3000 /quiet
    cls
    )

    call :deplacement "%destination%" "!jour!_!heure!"

    exit /b 0

    :: ---------------------------
    :: fin du programme
    :: ---------------------------

    :: ---------------------------
    :: debut de la fonction
    :: ---------------------------

    :deplacement

    set index=0
    if not exist "%~1\%~2" (mkdir "%~1\%~2")

    for /f "delims=" %%A in ('2^>nul dir /b /a-d ^| find ".bmp"') do (

    set /a index+=1
    set ref=000!index!
    set ref=!ref:~-4!

    echo. & echo ==^>^> %~2#!ref!%%~xA
    >nul move "%%~fA" "%~1\%~2\%~2#!ref!%%~xA"
    )

    goto :eof

    :: ---------------------------
    :: fin de la fonction
    :: ---------------------------


    Tu as juste besoin de modifier les parties soulignées.

    0
    1. nice merci
      et oui ça a rapport avec la prise de photo
      0
    2. merci merci merci
      Je ne comprend rien dans les % # / " !
      0
    3. et aussi pourquoi je n'ai pas reçu les réponce par mail (donc j'en ais écris un autre pareil)
      0
    4. @philton5000Si tu comprends le reste c'est déjà bien.

      Je vais essayer d'expliquer :

      %1 et %2 correspondent aux paramètres que l'on envoie à la fonction, dans ce cas précis :

      %1 est égal à la variable "%destination%"
      %2 est égal à la variable "!jour!_!heure!"

      L'utilité d'une fonction c'est d'éviter plusieurs lignes de code qui se répètent, un peu comme une boucle FOR. A chaque fois qu'on a besoin de ces lignes de code on appelle (CALL) la fonction.
      0
    5. @philton5000Pour recevoir les réponses par mail, il faut cocher la case qui va bien.
      0