[Batch] Déplacer des fichiers dans des dossiers?

Déplacer des fichiers dans des dossiers? [Batch] - Shell/Batch - Programmation

Marsh Posté le 07-11-2007 à 15:22:18    

Bonjour, ca faisait longtemps que j'étais pas venu :)
 
Alors, j'aimerais classés des fichiers qui sont tous dans le même dossier, dans des dossiers datés, classage étant basé sur la date de création des fichiers.
 
Par exemple:

Code :
  1. +dossier_photos
  2.     +fichier_1.jpg (crée le 05/11/07)
  3.     +fichier_2.jpg (crée le 05/11/07)
  4.     +fichier_3.jpg (crée le 06/11/07)


 
Se transformerais en:

Code :
  1. +dossier_photos
  2.     +dossier_05_11_07
  3.         +fichier_1.jpg
  4.         +fichier_2.jpg
  5.     +dossier_06_11_07
  6.         +fichier_3.jpg


 
J'ai évidemment essayé quelques trucs, mais j'ai perdu mon peu de connaissance en Batch ^^
 
Merci d'avance de votre aide :)

Reply

Marsh Posté le 07-11-2007 à 15:22:18   

Reply

Marsh Posté le 07-11-2007 à 15:23:10    

Pourquoi ne pas faire ça en VBS, ce serait plus simple, je pense

Reply

Marsh Posté le 07-11-2007 à 15:26:52    

Ben je veux bien moi, mais je connais pas du tout VBS ^^.

Reply

Marsh Posté le 07-11-2007 à 17:41:13    

Voici:

Code :
  1. if /i exist "%~dp0listFch.txt" del "%~dp0listFch.txt" /f /q
  2. for /r "%~1\" %%i in (*.jpg) do echo %%i^|%%~ti>> "%~dp0listFch.txt"
  3.   for /f "tokens=1,2 delims=|" %%i in ('type "%~dp0listFch.txt"') do call :ccmd "%%i" "%%j"
  4. :ccmd
  5. set VrRecupChm=%~1
  6. set VrRecupDat=%~2
  7. set VrRecupDat=%VrRecupDat:~0,-6%
  8. set VrRecupDat=%VrRecupDat:/=_%
  9.   echo  ==^> %VrRecupChm%:%VrRecupDat%
  10. xcopy /s /e /c /i /h /f /r /y "%VrRecupChm%" "%userprofile%\Bureau\MonRep\%VrRecupDat%\ *.*"


Message édité par Coolnut le 07-11-2007 à 17:41:20
Reply

Marsh Posté le 07-11-2007 à 19:07:07    

Merci, ca va m'aider je crois :D
 
J'essayerais demain et posterais le code modifié.

Reply

Marsh Posté le 07-11-2007 à 19:22:35    

Il faut que tu fasse glisser le répertoire de tes photos sur le script

Reply

Marsh Posté le 07-11-2007 à 19:36:32    

Ah c'est assez cool :)
 
Enfin, c'est pas exactement ce que je veux faire mais le principe est quasiment bon. Par exemple je vais déja changé xcopy en move car sinon ca fait des copies :o. Et puis, je pense qu'il y a moyen de se passer de créer un fichier texte.
 
En fait, je voulais juste savoir comment récupérer la date de création du fichier :D
 
Demain je posterais le code que j'ai utilisé pour faire mon truc, ptetre que ca en aidera d'autres :)

Reply

Marsh Posté le 08-11-2007 à 12:33:59    

Le code que je t'ai donner précédament, c'est un autre qui la fait.
 
Mais je vein de le faire moi même a ta convenance:
 

Code :
  1. if not exist "%userprofile%\Bureau\MonRep" mkdir "%userprofile%\Bureau\MonRep"
  2. for /r "%~1\" %%i in (*.jpg) do set VrNamFch=%%i& set VrDatFch=%%~ti& call :movFch
  3. goto fin
  4. :movFch
  5. set VrDatFch=%VrDatFch:~0,10%
  6. set VrDatFch=%VrDatFch:/=-%
  7. if not exist "%userprofile%\Bureau\MonRep\%VrDatFch%" mkdir "%userprofile%\Bureau\MonRep\%VrDatFch%"
  8. move "%VrNamFch%" "%userprofile%\Bureau\MonRep\%VrDatFch%"
  9. goto :eof
  10. :fin


 
Ceci dit, si tu le fait d'une autre maniére montre moi ce que ca donne


Message édité par Coolnut le 08-11-2007 à 12:53:54
Reply

Marsh Posté le 08-11-2007 à 21:25:25    

Bah j'ai fait a peu près la même chose en fait :)
 
Voici en gros le code final (%Folder% est défini autre part dans mon prog),

Code :
  1. FOR %%i IN (DCM*.jpg) DO (
  2. SET FileName=%%i
  3. SET FileDate=%%~ti
  4. CALL :MOVEIT
  5. )
  6. GOTO :EOF
  7. :MOVEIT
  8. SET FileDate=%FileDate:~0,-6%
  9. SET FileDate=%FileDate:/=-%
  10. SET FileFolder=%Folder%\%FileDate%
  11. IF NOT EXIST "%FileFolder%" MD "%FileFolder%"
  12. MOVE "%FileName%" "%FileFolder%"
  13. :EOF


 
Pratiquement la même chose en fait! C'etais surtout pour %%~ti que j'avais besoin d'aide, je savais pas que ca existait. Merci encore

Reply

Sujets relatifs:

Leave a Replay

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