Forum Clubic

Création script pour renommer plusieurs fichiers !

Bonjour à tous, j’ai effectué une recherche avant tout post, néanmoins je ne trouve rien ne correspondant à mon soucis. En effet je veux créer un script afin de renommer des fichiers, jusque là ce n’est pas très compliqué…

Après où je bloque, c’est sur la suite, en effet mon fichier est du type ‘001225.pai’, que je voudrais renommer par exemple en ‘000300.pai’. Les trois premiers chiffres du fichier à renommer sont toujours les mêmes, seul les trois derniers changent chaque mois.

001225 en 000300
002458 en 000400
etc…

Les fichiers se trouvent sur un lecteur réseaux, et cela doit être exécuté sur environnement Windows (XP), si vous avez des solutions / conseils.

Cordialement.

Déjà, il faudrait que tu nous donnes le script pas très compliqué qui te sert actuellement à renommer tes fichiers, pour voir si on peut s’appuyer dessus pour la suite (en particulier pour ce qui est d’établir la liste des fichiers à renommer)
Après, si on admet que les trois premiers chiffres ne changent pas, il faudrait que tu nous donne la règle qui te permet d’établir la deuxième partie. Dans ton exemple, tu incrémentes de 100, mais est-ce que ça correspond à ton choix définitif ou est-ce pour l’exemple ?

Si tu gardes cette règle, tu peux faire en batch. regarde du côté de SET /A pour voir comment faire évoluer ta partie variable.

Me revoilà, j’avais laissé un peu de coté ce batch, mais maintenant j’ai un peu de temps au taff, donc je m’y remets, en faite, l’incrémentation n’est pas obligatoirement de 100 à chaque, j’ai une table de correspondance qui elle ne change pas.

Ne m’y connaissant pas du tout en programmation ou autre, j’avais tenté un vulgaire rename, mais cela serait trop facile, donc toutes vos idées ne me feront qu’avancée…

le rename est pourtant la solution.
pour trouver la correspondance avec ton nom d’entrée tu peux t’appuyer sur la commande FIND

par exemple :
@echo off

REM liste les fichiers contenant l’extension “.CFG”, mais la variable %%i ne contient pas l’extension du fichier
REM grâce à l’utilisation de ‘delims’ et ‘tokens’
for /f “delims=. tokens=1” %%i in (‘dir /B *.CFG’) do (

REM cherche la correspondance dans le fichier corr.txt
REM Fichier de correpondance :
REM document_package_modele;doc1
REM modele_filemap;mod1
REM nom d’entrée ; nom de sortie
for /F “delims=; tokens=2” %%k in (‘FIND “%%i” corr.txt’) do (

REM Affichage du nom de correspondance trouvé
REM + l’extension qui va bien
echo k : %%k.ap1
)

REM Saut de ligne
echo.
)

Oki, en faite lors de la génération de mes fichiers, seul les trois derniers chiffres d’un fichier restent identiques. Il me faudrait rename un fichier grâce au trois dernier chiffre.

Exemple :

001225 en 000300 => 001 sont des chiffres qui ne sont pas fixe, ils changent au fil du temps, par contre 225 est toujours présent. Donc grâce au 225 je sais que je dois le rename en 000300, il faut que j’ignore le 001 mais je ne sais pas comment faire, mon soucis est là.

Merci :slight_smile:
Edité le 24/06/2010 à 10:34

pour extraire les 3 derniers caractères de la chaine il faut :

setlocal enabledelayedexpansion
for /F "delims=" %%i in (monfichier.txt) do (
set RES=%%i
echo !RES:~3!
echo.
)
endlocal

Le fichier monfichier.txt ne contient pour mon test que les lignes :

Edité le 24/06/2010 à 13:38

Oki je vois, mais après comment indiquer le rename ?

comment dire que le 225 tu me le renomme en 000300 par exemple ?

ça peut-être :

setlocal enabledelayedexpansion
for /F "delims=" %%i in (monfichier.txt) do (
  set RES=%%i
  set X=!RES:~3!
  if _%X=225 rename %%i 000300
)
endlocal

Bon y a peut être une erreur, mais c’est l’idée (j’aime pas batch, shell ça passe encore…)