Jump to content

Programme de trie de fichiers


Fend

Recommended Posts

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:

Link to comment
Share on other sites

Bien sûr que ça m'intéresse !! :top:

Tout les moyens sont bons, j'ai la pression du patron sur les épaules :transpi:

Faudra juste que je trouve de quoi faire ce programme... Si VBA est fournit avec Office ça devrait être bon.

D'avance merci :top:

Link to comment
Share on other 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:

Link to comment
Share on other 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.

Link to comment
Share on other sites

  • 2 weeks later...

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

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...