Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1387 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Mémoriser partie d'un nom de fichier après dir

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mémoriser partie d'un nom de fichier après dir

n°1323484
eZula
Posté le 11-03-2006 à 21:39:48  profilanswer
 

Bonjour à tous,
 
j'ai posé cette question sur plusieurs forums, sans obtenir de réponses concrètes...
voilà le problème :
 
en premier lieu, il faut vérifier (avec dir /s) qu'il existe un fichier dont le nom se décompose ainsi : nomdefichieraaa.dat
la partie "nomdefichier" est variable, le nom peut etre différent.
la partie aaa.dat est constante.
 
On sait de plus que s'il existe un tel fichier nomdefichieraaa.dat, alors il existe 3 autres fichiers qui seront nommés ainsi nomdefichier* (peu importe ce que vaut *, ce qu'il faut juste retenir, c'est que ces 3 fichiers auront forcément un nom qui commence par "nomdefichier"
 
Bien, mais la question maintenant, c'est comment lister tous ces fichiers en un seul coup ?
 
J'explique : par la commande dir *aaa.dat -> 2 possibilités
- si rien n'est trouvé, pas de souci, le problème est réglé (if not exist *aaa.dat echo il n'y a pas ce fichier grossomodo)
- si nomdefichieraaa.dat existe, alors lister tous les fichiers dont le nom commence par nomdefichier avec une commande dir par exemple (d'après les données, il devrait en lister 4)
 
je pense qu'il faut stocker quelque part la partie "nomdefichier" pour pouvoir la rechercher. Une difficulté supplémentaire est que ces fichiers dont le nom commence par nomdefichier peuvent se situer dans des répertoires différents.
 
En espérant que la formulation du problème soit claire, merci pour votre aide.
 

mood
Publicité
Posté le 11-03-2006 à 21:39:48  profilanswer
 

n°1323511
wackevat
Posté le 11-03-2006 à 22:57:33  profilanswer
 

Je présume que tu sois sous XP.
 
Regarde l'aide de la commande set :
set VAR=%VAR:~x,y%
et ses variants, ainsi que celle de for pour %~nf et cie.

n°1323628
eZula
Posté le 12-03-2006 à 13:04:48  profilanswer
 

bonjour nglechau et merci
 
en effet je suis sous xp...
 
pas évident. J'ai juste fait ce test pour le moment  
set var="*"aaa.dat
dir %var%
évidemment il ne trouve qu'un seul fichier, celui qui permet juste de déterminer si ces 4 fichiers existent. Tu aurais plus de précisions sur  
VAR=%VAR:~x,y%  
est-ce que x correspond à la première partie du nom de fichier et y à la deuxième ?
quelques essais avec cette commande n'ont rien donné...

n°1323638
wackevat
Posté le 12-03-2006 à 13:23:30  profilanswer
 

Tu tapes  
set /?
à l'invite de commandes pour l'aide sur la syntaxe et les exemples (ces derniers sont donnés pour PATH mais pareil pour n'importe quelle variable).

n°1323647
eZula
Posté le 12-03-2006 à 13:52:41  profilanswer
 

en fait on pourrait faire comme ceci également (à moins que ce ne soit la piste que tu suggères, désolé je suis débutant)
 
vu que l'expression aaa.dat de nomdefichieraaa.dat est constante et si n est le nombre de caractères du nom du fichier, il faudrait qu'il extrait les (n-7) premiers caractères (aaa.dat = 7 caractères en incluant le point) en partant de la droite. apparemment avec %VAR:~x,-7% ça a l'air possible (?)
 
j'essaye de regarder de ce côté

n°1323659
wackevat
Posté le 12-03-2006 à 14:21:43  profilanswer
 

Voilà, c'est exactement dans cette direction que je t'aiguillais ;)

n°1323660
eZula
Posté le 12-03-2006 à 14:24:11  profilanswer
 

je suis sur que c'est pas loin...
 

Citation :

set var=*aaa.dat
dir %var% -> il trouve le fichier
set %var:~0,-7%


 
-> la variable d'environnement * n'est pas définie
 
c'est logique mais je ne comprends pas comment enregistrer cette parie "nomdefichier" autrement, c'est bien la partie qui se trouve avant aaa.dat et elle est inconnue
 

n°1323780
wackevat
Posté le 12-03-2006 à 18:36:52  profilanswer
 

Tu n'as pas regardé l'aide de for comme j'avais suggéré ?
 
Tu dois lister les fichiers autrement que par dir /s puis utiliser les substitutions pour récupérer les éléments nécessaires pour différentes opérations, le nom du fichier sans ou avec extension dans ce cas précis.

n°1325499
eZula
Posté le 14-03-2006 à 22:19:03  profilanswer
 

bonsoir,nglechau
 
j'ai vraiment du mal à combiner les deux commandes... au mieux il trouve juste le fichier qui identifie la présence de *aaa.dat, bref ça n'avance pas. J'ai bien regardé l'aide mais ça coince.
Et je ne sais pas comment lister les fichiers autrement qu'avec dir, à moins d'envoyer le fichier dans un fichier de sortie, puis faire lire ce fichier de sortie en utilisant éventuellement set %var:~0,-7%
 
je nage ; je te remercie de m'avoir aiguillé, mais tu n'aurais pas une approche plus concrète, stp ?

n°1325524
wackevat
Posté le 14-03-2006 à 22:54:27  profilanswer
 

Regarde dans l'aide de
for
notamment  
for /r
 
et la fin sur les substitutions.
 
Exemple :

Code :
  1. echo Liste de tous les fichiers txt du dossier C:\mon_dossier
  2. for /r C:\mon_dossier %%f in (*.txt) do (
  3.   echo %%f
  4. )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Mémoriser partie d'un nom de fichier après dir

 

Sujets relatifs
fichier .dll du type jeuVariable dans un fichier txt
Sous win98 j'aimerai lancer un fichier.exe à partir d' un fichier.bat[QST] Recup fichier interent
Ajout automatique fichier texteloader de fichier ASE
[Matlab] Boucle de lecture de fichierBatch empèche création de fichier
[C#] Rechercher un fichier sur le disque "rapidement"erreur de téléchargement de fichier
Plus de sujets relatifs à : Mémoriser partie d'un nom de fichier après dir


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR