[BATCH] renomer des fichiers dans tout le lecteur.

renomer des fichiers dans tout le lecteur. [BATCH] - Shell/Batch - Programmation

Marsh Posté le 19-01-2006 à 17:02:03    

Bonjour,
 
Suite a un scan antivirus en ligne, PANDA ma trouver un virus sur une grande quantité de fichier .exe partout dans mes lecteurs.
Ne pouvant pas nettoyer les fichiers .exe, PANDA à eu la tres bonne idée de me les renomer en _exe.vir.
 
JE cherche a faire un script BATCH qui balayerai mon lecteur g: et J: et qui me renomerai TOUT les fichier en *_exe.vir => *.exe .
 
Merci d'avance.
Christophe


Message édité par cricri-2000 le 19-01-2006 à 17:13:11
Reply

Marsh Posté le 19-01-2006 à 17:02:03   

Reply

Marsh Posté le 19-01-2006 à 17:27:36    

Personne n'a jamais fait ce genre de script?

Reply

Marsh Posté le 19-01-2006 à 17:27:55    

Ben il y  a plein d'exemples similaires sur ce forum. Soit tu fais une recherche, soit tu postes ton script actuel pour qu'on corrige. Et sois patient au lieu de upper après un quart d'heure. C'est un forum d'entraide à la programmation ici et non pas un fournisseur de script tout fait, encore moins une hotline  :sarcastic:

Reply

Marsh Posté le 19-01-2006 à 17:45:38    

Mon script actuel n'est pas focntionnel justement.
Je ne sais pas faire de recursivité dans les rep/ss rep

Code :
  1. rename  *_exe.vir *.exe


 
Pour la recherche, Rien ici ne correspond vraiment a ce que je recherche.
Mais comme je me trompe surement, peut tu me donner le lien ou ce script a déja été donné.
 
Merci

Reply

Marsh Posté le 19-01-2006 à 18:36:18    

Code :
  1. for /R %%x in (*_exe.vir) do rename %%x.exe


J'ai trouvé ça sinon... mais ça ne marche pas

Reply

Marsh Posté le 19-01-2006 à 18:53:39    

Tu y es presque ;)
 
Dans l'aide de la commande
for
tu as
%%~nx
pour le nom du fichier (sans extension).
 
Ensuite, si tu regardes dans l'aide de la commande
set
tu verras comment extraire une partie d'une chaîne de caractères (x caractères au début, ou toute la chaîne sauf x derniers, etc.)
 
Puisque, là, nous avons besoin de récupérer les noms de fichier sans les 4 derniers caractères.
 
Sinon, il faut revoir la syntaxe de la commande
rename
Celle que tu utilises là n'est pas la bonne.
 
Voilà. Et dis-nous si ça t'aide à avancer ;)

Reply

Marsh Posté le 19-01-2006 à 18:54:06    

oui merci, je suis en train d'essayer
 
par contre pour set, ça ne m'avance pas trop

Code :
  1. >SET /?
  2. Affiche, fixe, ou supprime des variables d'environnement de MS-DOS.
  3. SET [variable=[chaîne]]
  4.   variable  nom de la variable d'environnement.
  5.   chaîne    chaîne de caractères à affecter à la variable.
  6. SET sans paramètres affiche les variables d'environnement définies.


Message édité par cricri-2000 le 19-01-2006 à 18:57:03
Reply

Marsh Posté le 19-01-2006 à 19:04:35    

Euh c'est tout ?
 
Je suis sous Linux là donc ne peux pas vérifier. Mais de mémoire ça fait beaucoup plus long que ça, avec plein d'exemples.
 
Regarde dans l'aide de Windows.

Reply

Marsh Posté le 20-01-2006 à 12:53:12    

Toto.bat

Code :
  1. for /R %%x in (*_exe.vir) do titi.bat %%~nx


 
Titi.bat

Code :
  1. set /a "<<" a= "%1" "4"
  2. echo %a%


 
J'ai des soucie avec la syntaxe de la commande SET :-(
y a rien dans l'aide windows


Message édité par cricri-2000 le 20-01-2006 à 12:53:42
Reply

Marsh Posté le 20-01-2006 à 14:25:56    

C'est vrai ;)
 
Tu n'as pas compris comment ça fonctionne ;)
 
J'ai vérifié hier soir : quand j'ai fait :
set /?
ça m'imprime deux pages d'aide. Comment ça se fait que chez toi c'était si court ?
 
Je te posterai ces deux pages ce soir, mais en anglais par contre.

Reply

Marsh Posté le 20-01-2006 à 14:25:56   

Reply

Marsh Posté le 20-01-2006 à 16:30:22    

Je confirme, je suis sous XP pro , et j'ai essayer aussi sur W2000.. ça sort la meme chose chez moi a savoir :

Code :
  1. Affiche, fixe, ou supprime des variables d'environnement de MS-DOS.
  2. SET [variable=[chaîne]]
  3.   variable  nom de la variable d'environnement.
  4.   chaîne    chaîne de caractères à affecter à la variable.
  5. SET sans paramètres affiche les variables d'environnement définies.


Message édité par cricri-2000 le 20-01-2006 à 16:31:14
Reply

Marsh Posté le 20-01-2006 à 16:41:51    

J'ai trouver un semblant de Doc pour SET sur le net....
 
J'ai refait mon code et j'ai sorti ça...
 
Toto.bat

Code :
  1. for /R . %%x in (*_exe.vir) do titi.bat %%~nx


 
titi.bat

Code :
  1. set a= %1
  2. set x= %a:~0,-4%
  3. rename %a%.vir %x%.exe


 
ça fonctionne pour le repertoire courant....
Il me reste plus qu'a lui faire parcourire toute l'arbo de mon DD ;-)


Message édité par cricri-2000 le 20-01-2006 à 16:53:48
Reply

Marsh Posté le 20-01-2006 à 16:48:15    

OKi. De toute façon, je te poste l'aide ce soir, ça peut servir on ne sait jamais.
 
Sinon, tes scripts sont bons cette fois-ci :) On peut les combiner en un en appelant une procédure :

Code :
  1. for /r "dossier_racine" %%x in (*_exe.vir) do (
  2.   call :renommer "%%~fx" "%%~nx"
  3. )
  4. goto fin
  5. :renommer
  6. set a=%~2
  7. set a=%a:~0,-4%
  8. ren "%~1" "%a%.exe"
  9. :fin


 
Peux pas tester tout de suite, mais ça ne doit pas être loin du code final.

Reply

Marsh Posté le 20-01-2006 à 16:55:09    

J'ai encore un petit soucie... mon script marche sauf :
 

  • mon rename, une fois qu'il passe a un sous dossier, forcement, il me fait  rename X => x.exe


il faut absolument que je lui mette l'arborescence devant le nom des fichiers, sinon, il ne le trouve pas... vu qu'il cherche a la racine

Reply

Marsh Posté le 20-01-2006 à 16:58:58    

Oui, c'est pourquoi j'ai précisé le dossier racine et passe deux params au lieu d'un seul.

Reply

Marsh Posté le 20-01-2006 à 21:00:07    

Comme promis, voici ce que ça donne quand je fais :  
set /?  
 
http://rapidshare.de/files/11445819/set.txt.html

Reply

Marsh Posté le 21-01-2006 à 10:23:38    

Moi je connais pas le batch donc je passe par excel
1) je fais un listing "dir >fic.txt"
2) j'importe "fic.txt dans excel
3) avec les formules de traitement de chaines excel, je crée une seconde colonne contenant "rename nom_depart nom_arrive"
4) j'exporte cette colonne dans un fichier texte que j'exécute comme un batch


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 22-01-2006 à 23:45:28    

hop, j'ai reussis et ça marche ;-)
 
toto.bat

Code :
  1. for /R . %%x in (*_exe.vir) do titi.bat "%%~fx" "%%~nx"


 
Titi.bat

Code :
  1. set a=%~2
  2. set a=%a:~0,-4%
  3. rename "%~1" "%a%.exe"


Message édité par cricri-2000 le 23-01-2006 à 00:10:35
Reply

Marsh Posté le 23-01-2006 à 00:05:11    

C'est ce que j'avais mis plus haut, mais là tu as un fichier de trop et deux lignes de trop :)
set a=0
set x=0

Reply

Marsh Posté le 23-01-2006 à 00:11:16    

exact pour les 2 ligne.. pour le fichier en trop, ça marche aussi bien ;-)
 
Merci Nglechau ;-)

Reply

Marsh Posté le 23-01-2006 à 00:14:28    

Tout à fait. C'est aussi une approche d'utiliser plusieurs batch qui s'appellent ;) Il faut juste ne pas oublier d'adapter le format et le nombre d'arguments de l'un quand ils sont modifiés dans l'autre.
 
@+

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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