Posted November 9, 200420 yr 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-2C:\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. 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)... A part cela j'ai quand même de solides bases en algorithmie. D'avance merci pour votre précieuse aide !
November 9, 200420 yr Salut ! Si cela t'intéresse, je peux t'indiquer comme faire avec Visual Basic 6, 7 ou 8, ou même en VBA (fourni avec Ms Office). A bientôt, Florian
November 9, 200420 yr Author Bien sûr que ça m'intéresse !! Tout les moyens sont bons, j'ai la pression du patron sur les épaules Faudra juste que je trouve de quoi faire ce programme... Si VBA est fournit avec Office ça devrait être bon. D'avance merci
November 9, 200420 yr Je vais rentrer chez moi ds quelques minutes (je suis ici à l'université) ! J'irai voir si je peux trouver les bonnes commandes. @++, Florian Edited November 9, 200420 yr by flopasques
November 10, 200420 yr Author 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 Vous vous doutez bien que si c'était une arborescence fixe, ça ne me poserait pas de problèmes !
November 13, 200420 yr Pour ça je te conseille le Perl. Je vais essayer de programmer ça. Mais j'ai un petit probleme et je sais pas ce que c'est ( je sais juste que c'est simple) Edited November 13, 200420 yr by an0nyme
November 15, 200420 yr Author 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.
November 25, 200420 yr Author 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
Archived
This topic is now archived and is closed to further replies.