Se connecter / S'enregistrer
Votre question

Recuperer une partie du nom d'un fichier en dos

Tags :
  • Batch
  • Programmation
Dernière réponse : dans Programmation
6 Mai 2011 09:51:27

besoin aide pour créer un batch dos SVP

Bonjour j'ai un répertoire qui contient plusieurs répertoires qui contiennent chacun un fichier.xml diffèrent. j'aimerais réorganiser ces fichiers comme suit:

lire les 3 ou 4 caractères de chaque fichier créer un répertoire qui porte le nom de ces 3 ou 4 caractères puis copier les fichiers qui commence avec ces 3 ou 4 caractères de dans.

exemple : c:\temp\FF2XML\toto-123456.xml

lire toto dans une variable dos
créer un répertoire c:\toto
puis grouper tout les fichier qui commence par toto dans ce répertoire.


Merci d'avance
***[at]gmail.com

Autres pages sur : recuperer partie nom fichier dos

8 Mai 2011 01:54:03

Bonjour,

Voici une solution qui fonctionne mais qui n'est pas optimum (remplacement de copy et del par move, gestion de la sortie quand le fichier liste est vide, ...).
Il faudrait pour cela encore quelques heures de travail.

Le batch est prévu pour les quatre premières lettres.

Citation :
cls
title Tri Rangement

@echo off

:_debut

dir *.xml /X /B /O:N > liste.txt

set "ligne="
set /a Numéro=0
for /f "delims=" %%a in ('more/e +%%Numéro%% ^< liste.txt') do (
if not defined ligne set "ligne=%%a"
)

if %ligne:~0,4%==~0 then fin

md %ligne:~0,4%
copy %ligne:~0,4%*.xml %ligne:~0,4%\*.*
del %ligne:~0,4%*.xml

goto _debut

:fin


A bientôt
m
0
l
8 Mai 2011 10:59:10

Une version, un peu mieux gérée mais perfectible :

Citation :
@echo off

:_debut
dir *.xml /X /B /O:N > liste.txt

call :size_file LISTE.txt

:suite
if %size%==0 goto fin

set "ligne="
set /a Numéro=0
for /f "delims=" %%a in ('more/e +%%Numéro%% ^< liste.txt') do (
if not defined ligne set "ligne=%%a"
)

md %ligne:~0,4%
move %ligne:~0,4%*.xml %ligne:~0,4%

goto _debut

:size_file
set size=%~z1
goto suite

:fin
del liste.txt


Il sera peut-être nécessaire d'enlever le _ devant debut que j'ai ajouté à cause de l'émoticône :D  .

A bientôt
m
0
l
Contenus similaires
a b L Programmation
8 Mai 2011 11:36:24

C'est beaucoup plus simple à faire en python :p 
m
0
l
13 Mai 2011 20:28:52

Merci pour votre aide précieuse

est ce que vous pouvez me dire comment récupérer dans une variable la date de création de ces fichiers.

merci encore
m
0
l
a b L Programmation
13 Mai 2011 20:41:18

Il faudrait tester un FOR /F sur la commande DIR avec les options qui vont bien
m
0
l
13 Mai 2011 20:52:31

Bonjour,

Le mot clé date permet de changer la date mais est aussi un moyen d'accès aux valeurs de date.

set permet de définir une variable globale (var_date)
% % indiquent la valeur de date
~x,y permettent d'extraire les caractères en définissant leur nombre, le début et sens de parcours de la valeur de la variable.

Citation :
set var_date=%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%


A bientôt

PS : Pour une autre question, il serait préférable d'ouvrir une nouvelle discussion.
m
0
l
a b L Programmation
13 Mai 2011 22:18:58

Attention, c'est la date du fichier qu'il voulait. ;) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS