Aide pour finir mon script

Résolu
dormeuse -  
 dormseuse -
Bonjour,

Je vais essayer d'être claire, je souhaite faire un script qui a pour but de copier des fichiers à partir d'un répertoire vers un nouveau répertoire, et que dans ce nouveau répertoire le nom des fichiers ne soient pas conserver en entier.

Etape du script :

- Tout d'abord, l'utilisateur va saisir une date (ex : 23/11/2011)
- Le script va mettre cette date au format 20111123
- Créer un nouveau dossier dans C:\Temp\20111123
- Va copier le répertoire qui se trouve dans C:\Docs and settings\Utilisateur\Bureau\20111123 pour le Coller dans C:\Temp\20111123 (créé ci-dessus)

Jusqu'ici, tout va bien mon script fonctionne bien, voilà le script :

set /p JJMMAAAA= Qu'elle est la date a editer ? (sous le format : JJ/MM/AAAA)
REM je demande à l'utilisateur de renseigner la date à imprimer

for /f "tokens=1-3 delims=/" %%f in ("%JJMMAAAA%") do (
set AAAAMMJJ=%%h%%g%%f)
REM permet de supprimer les '/' et d'inverser le format de la date (résultat obtenu : AAAAMMJJ)

mkdir c:\temp\%AAAAMMJJ%
REM permet de créer un répertoire nommé avec la date à éditer au format AAAAMMJJ

xcopy C:\"Documents and Settings"\utilisateur\Bureau\%AAAAMMJJ% c:\temp\%AAAAMMJJ%
REM permet de copier le contenu d'un répertoire vers un autre



Mais par la suite, je veux que les fichiers qui se trouvent dans le nouveau répertoire, ne gardent qu'une partie de leur nom. Ils ont la forme suivante :

A01390_01G01_F040_20111123092139_518426312.pdf
A02000_03F01_F015_20111122150943_518345827.pdf
A02200_04C02_F040_20111123071918_518368403.pdf...

Je voudrais les renommer en enlevant les '_' et en conservant uniquement 2 parties et le .pdf, c'est à dire :

F04020111123092139.pdf
F01520111122150943.pdf
F04020111123071918.pdf...

Est-ce que cela est possible, si c'est le cas, est-ce que vous pouvez m'aider pour la suite du script?

Merci pour votre aide

A voir également:

8 réponses

Utilisateur anonyme
 
Salut ;)

Petite précision :

xcopy C:\"Documents and Settings"\utilisateur\Bureau\%AAAAMMJJ% c:\temp\%AAAAMMJJ%

Cette ligne est correcte, mais pas dans la mise en forme....


Quand tu as un epsace, il faut mettre entre guillemet le chemin complet...


Avec ceci, tu comprendras mieux :

xcopy "C:\Documents and Settings\utilisateur\Bureau\%AAAAMMJJ%" ":\temp\%AAAAMMJJ%



Car si tu as affaire à un titre à rallonge, sous windows XP, bourrée d'espace, deux guillemets suffisent : "CHEMIN" -> au lieu de mettre des guillemets là où il y a un espace.


Ca va te permettre de gagner du temps au codage ;)


@+
1
dormseuse
 
Merci Franco pour la petite info
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
pour renommer les fichiers
C:> dir /b
A01390_01G01_F040_20111123092139_518426312.pdf
A02000_03F01_F015_20111122150943_518345827.pdf
A02200_04C02_F040_20111123071918_518368403.pdf

C:> aa

C:> dir /b
F01520111122150943.pdf
F04020111123071918.pdf
F04020111123092139.pdf

C:> type aa.bat
@ echo off

for /f "delims=_ tokens=1,2,3,4,5" %%a in ('dir /b *.pdf') do (
ren %%a_%%b_%%c_%%d_%%e %%c%%d.pdf
)

C:>
1
dormseuse
 
Bonjour Dubeck,

Ce que tu as mis ci-dessus, c'est un copier/coller des commandes que tu as écris dans le fenêtre invite de commandes?

Merci
0
Utilisateur anonyme
 
Bonjour....


En espérant que tu n'as pas beaucoup de fichier PDF ;)



* la commande pour renommer : c'est ren

Pour en savoir plus, ouvre l'invite de commande et tape ren /?

Renomme un ou plusieurs fichiers.   

RENAME [lecteur:][chemin]nom_de_fichier1 nom_de_fichier2.   
REN [lecteur:][chemin]nom_de_fichier1 nom_de_fichier2.   

Vous ne pouvez pas spécifier un nouveau lecteur pour votre destination.   



Exemple :
* Mon fichier 1 s'appelle premier et le second s'appelle second...
* Ils sont sur C:\
* Je veux les renommer en pdf1 et pdf2
* je veux enfin les mettre sur c:\users\thomas\desktop,

Ce que je ferais, c'est de les renommer, et ensuite de les déplacer :)


Je fais donc ceci :

cd c:\   
ren premier.pdf pdf1.pdf   
ren second.pdf pdf2.pdf   
move "c:\pdf1.pdf" "c:\users\thomas\desktop"   
move "c:\pdf2.pdf" "c:\users\thomas\desktop"   



Ce n'est peut-être pas ce que tu cherches, mais si tu veux renommer, tu peux passer par la commande REN

En tout cas, le petit code marche pour moi...
A toi de l'adapter pour ton PC :)

Si tu n'as pas beaucoup de fichier à renommer, c'est l'idéal ;)


Sinon, on peut faire autrement :
* Renommer chaque fichier
* Faire une boucle de ces fichiers afin de les déplacer d'un coup


@+


Tiens moi au courant ;)


EDIT :

J'ai relus ton topic......

Les fichiers sont déjà dans un répertoire :|


Et je pense que ces fichiers, tu en as beaucoup, non ?

++
0
dormeuse
 
En effet, j'ai beaucoup de fichiers à renommer et je les copie dans un premier temps dans un autre répertoire car je ne veux pas travailler sur l'original (en cas de pertes de fichiers ou autre).

Il me faut donc une boucle, là je bloque, je ne sais pas comment faire car en plus je ne veux conserver qu'une partie du nom du fichier et l'extension.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dormeuse
 
@ dubcek : je n'ai pas tout compris mais en même, je ne me suis pas trop attardée ce que tu as écris,

Toutefois je vois ça lundi ou mardi et je vous tiens au courant.

Merci
0
dormseuse
 
Bonjour,

Voilà mon nouveau script :


set /p JJMMAAAA= Qu'elle est la date a editer ? (sous le format : JJ/MM/AAAA) 
REM je demande à l'utilisateur de renseigner la date à imprimer 

for /f "tokens=1-3 delims=/" %%f in ("%JJMMAAAA%") do (
set AAAAMMJJ=%%h%%g%%f)
REM permet de supprimer les '/' et d'inverser le format de la date (résultat obtenu : AAAAMMJJ)

mkdir c:\temp\%AAAAMMJJ%
REM permet de créer un répertoire nommé avec la date à éditer au format AAAAMMJJ

xcopy "C:\Documents and Settings\utilisateur\Bureau\%AAAAMMJJ%" "C:\temp\%AAAAMMJJ%"
REM permet de copier le contenu d'un répertoire vers un autre

for /f "delims=_ tokens=1,2,3,4,5" %%a in ('dir /b C:\temp\%AAAAMMJJ%\*.pdf') do (
ren C:\temp\%AAAAMMJJ%\%%a_%%b_%%c_%%d_%%e %%a_%%d.pdf
) 

pause


Le script fonctionne très bien comme ça.

Mais maintenant, je voudrais incrémenter une variable pour l'ajouter au nom mais ça n'incrémente pas, ça reste à 1


set /p JJMMAAAA= Qu'elle est la date a editer ? (sous le format : JJ/MM/AAAA) 
REM je demande à l'utilisateur de renseigner la date à imprimer 

for /f "tokens=1-3 delims=/" %%f in ("%JJMMAAAA%") do (
set AAAAMMJJ=%%h%%g%%f)
REM permet de supprimer les '/' et d'inverser le format de la date (résultat obtenu : AAAAMMJJ)

mkdir c:\temp\%AAAAMMJJ%
REM permet de créer un répertoire nommé avec la date à éditer au format AAAAMMJJ

xcopy "C:\Documents and Settings\utilisateur\Bureau\%AAAAMMJJ%" "C:\temp\%AAAAMMJJ%"
REM permet de copier le contenu d'un répertoire vers un autre

set /a nb=1
for /f "delims=_ tokens=1,2,3,4,5" %%a in ('dir /b C:\temp\%AAAAMMJJ%\*.pdf') do (
ren C:\temp\%AAAAMMJJ%\%%a_%%b_%%c_%%d_%%e %%a_%%d.pdf
set /a nb+=1 
echo %nb%
) 

pause 



Est-ce que j'ai une erreur dans le script qui fait que ça ne fonctionne pas?

Merci pour vos réponses
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
comme ça:
setlocal enableDelayedExpansion
set /a nb=1
for /f "delims=_ tokens=1,2,3,4,5" %%a in ('dir /b C:\temp\%AAAAMMJJ%\*.pdf') do (
ren C:\temp\%AAAAMMJJ%\%%a_%%b_%%c_%%d_%%e %%a_%%d.pdf
set /a nb+=1 
echo !nb!
) 
0
dormseuse
 
Super avec nb comme ceci : !nb!, ça fonctionn,

Je vous remercie pour votre aide
0