Aller au contenu

Programme de trie de fichiers


Fend

Messages recommandés

Bonjour tout le monde,

J'ai un petit programme à réaliser pour le boulot, c'est assez urgent puisqu'il le faudrait fonctionnel demain matin ! ;) Il s'agit de trouver tout les fichiers *.scp des répertoires ...\screening\ et ...\D-2\ d'une arborescence à trois niveaux. Puis de les déplacer dans un répertoire "\screeningD-2\" à la racine de l'arborescence en question ("C:\progtri\OP476E~1\").

J'ai cherché les lignes de commandes que je pourrais réunir dans un script :

J'arrive à réunir dans un fichier texte tout les répertoires à déplacer grace

à cette commande :

DIR /A:d /O:G /S /B screening D-2 > rep.txt

J'obtiend alors un résultat ressemblant à celui-ci listant tous les répertoires

Screening et D-2 présent dans les nobreux sous-répertoires de l'arborescence :

C:\progtri\OP476E~1\BULMA\D-2

C:\progtri\OP476E~1\BULMA\SCREENING

C:\progtri\OP476E~1\GERXA\D-2

C:\progtri\OP476E~1\GERXA\SCREENING

C:\progtri\OP476E~1\GIOMA\D-2

C:\progtri\OP476E~1\GIOMA\SCREENING

C:\progtri\OP476E~1\LAQME\D-2

C:\progtri\OP476E~1\LAQME\SCREENING

C:\progtri\OP476E~1\RICCL\D-2

C:\progtri\OP476E~1\RICCL\SCREENING

Je n'arrive pas à aller plus loin avec les lignes de commande. :fou:

Je me demandais si quelqu'un pouvais m'aider à réaliser ce script ou si vous aviez une suggestion de langage de programmation (genre C ou C#) dans lequel je pourrais programmer cela.

Je précise que la dernière fois que j'ai touché à un langage de programmation c'était un petit programme de merde en C il y a plus de 4 ans (en TP d'IUT)... :D

A part cela j'ai quand même de solides bases en algorithmie. :D

D'avance merci pour votre précieuse aide ! :up:

Lien vers le commentaire
Partager sur d’autres sites

J'oubliais de préciser un truc :

Ce n'est qu'un exemple simplifié, dans la réalité cette arborescence compte quelques centaines de répertoires, et tout ça change progressivement toute la semaine...

D'où la nécessité de faire un programme qui va chercher lui même ce qu'il y a à déplacer et qui se charge de tout... Histoire de le lancer toutes les semaines afin de faire le tri régulièrement !

Je dis ça parce que la plupart de mes amis à qui j'ai demandé de l'aide me sortent : ben fait le manuellement c'est plus simple :transpi:

Vous vous doutez bien que si c'était une arborescence fixe, ça ne me poserait pas de problèmes ! :roll:

Lien vers le commentaire
Partager sur d’autres sites

Ca y est, j'y suis arrivé :

@echo OFF

Set MyDir=C:\progtri\TEMP
set ROOT=c:\progtri\

Set Rep_File=%MyDir%\Repertoire.txt

Set Fichier_File=%MyDir%\Fichier.txt

Del %Rep_File%

cd %ROOT%\%1

For /F "Tokens=*" %%I in ('Dir /A:d /O:G /S /B screening D-2') Do Echo "%%I\*.scp" >>%Rep_File%

REM Fichier repertoire.txt mis a jour.

For /F "Tokens=*" %%I in (%Rep_File%) Do MOVE %%I "%ROOT%\%1\%1 END\screening D-2\" 

REM Fichiers Screening et D-2 deplaces !

For /F "Tokens=*" %%I in ('Dir /A:d /O:G /S /B screening D-2') Do RD "%%I"

REM Repertoires Screening et D-2 supprimes !

exit

Ca marche bien. Noté que se script se lance avec un paramètre (%1) qui permet de spécifier la racine d'une des nombreuses arborescences de ce type.

Il me reste juste à gérer la gestion des erreurs et les messages d'erreurs (traduits et interprétés) destinés à l'utilisateur.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Chose promise, chose due. Voici le programme terminé avec prise en charge des erreurs et du réseau pour l'exécuter des postes clients. + correction de petits bugs imprévus...

@echo OFF

net use t: \\serveur\cardionics

Set MyDir=t:\TEMP
set ROOT=t:

Set Rep_File=%MyDir%\Repertoire.dat

If "%1"=="" (
  GOTO :param
) ELSE (
  If not exist %ROOT%\%1\nul GOTO :etude
)

If exist %Rep_File% Del %Rep_File%

If not exist "%ROOT%\%1\%1 END\screening D-2\nul" MD "%ROOT%\%1\%1 END\screening D-2\"

cd %ROOT%\%1

Dir /A:d /O:G /S /B screening D-2
If %errorlevel% == 1 (
    cls
    echo.
    echo.
    echo. Aucun répertoire Screening ou D-2 trouvé.
    echo.
    echo. Soit les Screening et D-2 ont déjà été déplacés,
    echo. soit les ECG n'ont pas encore été triés.
    echo. Dans ce cas, exécutez le programme triscp.exe.
    echo.
    echo.
    pause
    exit
)

For /F "Tokens=*" %%I in ('Dir /A:d /O:G /S /B screening D-2') Do Echo "%%I\*.scp" >>%Rep_File%

Echo.
Echo.Liste des répertoires "Screening" et "D-2" mise à jour.
Echo.

For /F "Tokens=*" %%I in (%Rep_File%) Do MOVE %%I "%ROOT%\%1\%1 END\screening D-2\" 

Echo.
Echo.Fichiers Screening et D-2 deplacés.
Echo.

For /F "Tokens=*" %%I in ('Dir /A:d /O:G /S /B screening D-2') Do RD "%%I"

Echo.
Echo.Repertoires Screening et D-2 supprimés.
Echo.

:end
cls
echo.
echo.
echo. Le programme s'est déroulé correctement.
echo.
echo. Tout les ECG Screening et D-2 ont été déplacé dans :
echo.  %ROOT%\%1\%1 END\screening D-2\
echo.
echo.
pause
exit

:param
cls
echo.
echo.
echo. Paramètre manquant ou incorrect !
echo. Veuillez spécifier le nom de l'étude en paramètre.
echo.
echo.
pause
exit

:etude
cls
echo.
echo.
echo. L'étude %1 n'existe pas.
echo.
echo.
pause
exit

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...