Correction Batch

Correction Batch - Shell/Batch - Programmation

Marsh Posté le 17-07-2024 à 16:45:26    

Bonjour à tous :D  
 
Voilà j'ai crée un batch pour pouvoir regrouper mes fichiers par date, il fonctionne nickel MAIS une fois le dossier créer j'ai pas le bon format de fichier  
 
Je m'explique, au mieux d'avoir la date au format normal donc comme ceux-ci : 17-07-24 ben j'ai le format suivant : 17-07-04 --  
 
 

Code :
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM Récupérer le chemin complet du dossier où se trouve ce fichier batch
  4. set "current_dir=%~dp0"
  5. REM Obtenir la date courante au format JJ-MM-AAAA (à ajuster selon le format de votre système)
  6. for /f "tokens=1-3 delims=/" %%a in ('date /t') do (
  7.     set "day=%%a"
  8.     set "month=%%b"
  9.     set "year=%%c"
  10. )
  11. REM Créer le dossier de destination basé sur la date
  12. set "destination=%current_dir%!day!-!month!-!year!"
  13. if not exist "!destination!" (
  14.     mkdir "!destination!"
  15. )
  16. REM Parcourir tous les fichiers du dossier actuel sauf ce fichier batch et les déplacer vers le dossier de destination
  17. for %%F in ("%current_dir%\*" ) do (
  18.     if not "%%~nxF"=="%~nx0" (
  19.         move "%%F" "!destination!" >nul
  20.     )
  21. )
  22. echo Fichiers déplaces avec succes dans le dossier !destination!.
  23. pause


 
D'où peut venir l'erreur ?


---------------
Delta
Reply

Marsh Posté le 17-07-2024 à 16:45:26   

Reply

Marsh Posté le 17-07-2024 à 23:49:03    

Le problème avec le format de la date vient probablement de la commande date /t et de la manière dont elle retourne la date en fonction des paramètres régionaux de votre système. Les paramètres régionaux peuvent influencer le format de sortie, et il semble que dans votre cas, la date est retournée sous un format différent de celui attendu.
 
Pour obtenir le format souhaité (JJ-MM-AAAA), vous pouvez ajuster le script batch en utilisant la commande wmic pour obtenir la date au format YYYYMMDD, puis réarranger les parties pour obtenir le format désiré.
 
Voici comment vous pouvez le faire :
 
batch

Code :
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM Récupérer le chemin complet du dossier où se trouve ce fichier batch
  4. set "current_dir=%~dp0"
  5. REM Utiliser WMIC pour obtenir la date au format AAAAMMJJ
  6. for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set datetime=%%i
  7. REM Extraire l'année, le mois et le jour
  8. set year=%datetime:~0,4%
  9. set month=%datetime:~4,2%
  10. set day=%datetime:~6,2%
  11. REM Créer le dossier de destination basé sur la date
  12. set "destination=%current_dir%%day%-%month%-%year%"
  13. if not exist "!destination!" (
  14.     mkdir "!destination!"
  15. )
  16. REM Parcourir tous les fichiers du dossier actuel sauf ce fichier batch et les déplacer vers le dossier de destination
  17. for %%F in ("%current_dir%\*" ) do (
  18.     if not "%%~nxF"=="%~nx0" (
  19.         move "%%F" "!destination!" >nul
  20.     )
  21. )
  22. echo Fichiers déplacés avec succès dans le dossier !destination!.
  23. pause


 
Dans ce script :

  • Nous utilisons wmic os get localdatetime /value pour obtenir la date et l'heure actuelles au format AAAAMMJJHHMMSS.
  • Nous extrayons l'année, le mois et le jour de cette chaîne.
  • Nous formons le dossier de destination en utilisant le format JJ-MM-AAAA.
  • Le reste du script parcourt les fichiers et les déplace vers le dossier de destination comme avant.


Ce script devrait résoudre le problème de format de date que vous rencontrez.


---------------
D3
Reply

Marsh Posté le 19-07-2024 à 17:53:47    

mechkurt a écrit :

Le problème avec le format de la date vient probablement de la commande date /t et de la manière dont elle retourne la date en fonction des paramètres régionaux de votre système. Les paramètres régionaux peuvent influencer le format de sortie, et il semble que dans votre cas, la date est retournée sous un format différent de celui attendu.
 
Pour obtenir le format souhaité (JJ-MM-AAAA), vous pouvez ajuster le script batch en utilisant la commande wmic pour obtenir la date au format YYYYMMDD, puis réarranger les parties pour obtenir le format désiré.
 
Voici comment vous pouvez le faire :
 
batch

Code :
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM Récupérer le chemin complet du dossier où se trouve ce fichier batch
  4. set "current_dir=%~dp0"
  5. REM Utiliser WMIC pour obtenir la date au format AAAAMMJJ
  6. for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set datetime=%%i
  7. REM Extraire l'année, le mois et le jour
  8. set year=%datetime:~0,4%
  9. set month=%datetime:~4,2%
  10. set day=%datetime:~6,2%
  11. REM Créer le dossier de destination basé sur la date
  12. set "destination=%current_dir%%day%-%month%-%year%"
  13. if not exist "!destination!" (
  14.     mkdir "!destination!"
  15. )
  16. REM Parcourir tous les fichiers du dossier actuel sauf ce fichier batch et les déplacer vers le dossier de destination
  17. for %%F in ("%current_dir%\*" ) do (
  18.     if not "%%~nxF"=="%~nx0" (
  19.         move "%%F" "!destination!" >nul
  20.     )
  21. )
  22. echo Fichiers déplacés avec succès dans le dossier !destination!.
  23. pause


 
Dans ce script :

  • Nous utilisons wmic os get localdatetime /value pour obtenir la date et l'heure actuelles au format AAAAMMJJHHMMSS.
  • Nous extrayons l'année, le mois et le jour de cette chaîne.
  • Nous formons le dossier de destination en utilisant le format JJ-MM-AAAA.
  • Le reste du script parcourt les fichiers et les déplace vers le dossier de destination comme avant.


Ce script devrait résoudre le problème de format de date que vous rencontrez.


 
 
Ça fonctionne :D  
 
Merci d'avoir aider :D


---------------
Delta
Reply

Marsh Posté le 19-07-2024 à 19:15:34    

Tu peux remercier chatgpt, je suis nul en batch... :o


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed