Rename avec variable

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
sam06
Batcheur débutant
Messages : 12
Enregistré le : 20 nov. 2008 18:17

Rename avec variable

Message par sam06 »

Bonjour à tous,
J'ai un petit batch qui me permet de concaténer une série de fichiers TXT présents dans un même répertoire, vers un fichier résultat. C'est de la forme :
copy *.txt result.tmp
rename result.tmp result.txt

Les fichiers sont par ex :
AADEFGH lundi 01.txt
AADEFGH mardi 02.txt
etc...

est-il possible que le fichier final se renomme avec juste le radical, c'est à dire par ex. ici "AADEFGH.txt". En clair, prendre les premiers caractères du nom et s'arrêter à l'espace ? ("AADEFGH" est un exemple, ça pourrai aussi être "GGTS lundi 01.txt")

par avance merci de votre aide.
sam06
Batcheur débutant
Messages : 12
Enregistré le : 20 nov. 2008 18:17

Re: Rename avec variable

Message par sam06 »

Bon, je vais simplifier l'approche, en renommant simplement result.txt par les 8 premiers caractères du nom de fichier, par un script du genre :

SET src= lenomdufichier
SET filename=%src:~1,8%
ren result.txt %filename%.txt

il me reste juste à récupérer le nom du premier fichier txt trouvé dans le répertoire courant, peu importe lequel. Avez-vous un piste ? merci par avance.
Avatar du membre
flox
Administrateur du site
Messages : 158
Enregistré le : 18 janv. 2008 22:05

Re: Rename avec variable

Message par flox »

Bonjour,

il est possible d'extraire la liste des fichiers d'un répertoire avec la commande "dir", en faisant une redirection dans un fichier, mais pour sélectionner uniquement les fichiers .txt la je ne sais pas.

bonne continuation

cordialement.
sam06
Batcheur débutant
Messages : 12
Enregistré le : 20 nov. 2008 18:17

Re: Rename avec variable

Message par sam06 »

J'ai trouvé une solution, je sais pas si niveau programmation c'est très académique, mais ça fonctionne ! Je poste quand même, si ça peut aider quelqu'un :

REM fusion de plusieurs fichiers TXT
dir /B *.txt > liste.log
copy *.txt result.tmp

FOR /F %%i in (liste.log) DO (set filename=%%i)

ren result.tmp %filename%.txt

ça résoud par la même occasion le problème du nombre de caractères : ça s'arrête à l'espace.

S'il y a une solution + élégante que de devoir faire un loop sur tous les fichiers, je suis preneur !
Bigfish
Batcheur débutant
Messages : 26
Enregistré le : 08 août 2008 18:46

Re: Rename avec variable

Message par Bigfish »

Salut,

voici une solution pour recupperer tout les fichiers texts du repertoire specifié et pour génerer un nouveau nom de fichier uniquement a partir du premier fichier trouvé.

Code : Tout sélectionner

@echo off

rem permet de lister tout les fichiers dont l'extention est .txt et de ne passer en parametre que les noms
for /r "c:\temp" %%i in (*.txt) do call :subroutine "%%~ni" 

:subroutine
rem on recuppere le parametre sans les double-quotes
set filename=%~1
rem on extrait la chaine avant le premiere espace et on cree le nouveau nom de fichier
for /f "tokens=1 delims= " %%i in ("%filename%") do set filename=%%i.txt
echo %filename%
pause
rem comme le 1ere fichier trouvé suffit et pour eviter de boucler sur les autres fichier pour rien, on sort
exit
A+ :)
sam06
Batcheur débutant
Messages : 12
Enregistré le : 20 nov. 2008 18:17

Re: Rename avec variable

Message par sam06 »

ça fonctionne nickel, merci beaucoup !
J'ai trouvé un lien intéressant pour tout ce qui tourne autour de la gestion du Rename, c'est un peu compliqué pour moi, mais ça peut donner quelques idées de scripts à d'autres :

http://www.experts-exchange.com/Operati ... 73735.html

Je pense qu'on peut mettre le tag [Résolu] sur le topic, mais je ne sais pas comment faire !
rjrenjian
Batcheur débutant
Messages : 11
Enregistré le : 28 août 2008 08:22
Contact :

Certainly has you to like

Message par rjrenjian »

centrifugeCertainly has you to like

















------------------------------------------------------------------------------------------------------------------------------------

replica rolex
replica watches paypal
replica watch paypal
replica chopard paypal
Répondre