IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Récupérer le nom de fichier avec des caractères inconnus


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut Récupérer le nom de fichier avec des caractères inconnus
    Bonsoir à tous.

    Dans une boucle FOR, je lis un fichier ligne par ligne, chaque ligne correspond à un fichier (avec son chemin), je teste si le fichier existe et si oui j’inscris dans un fichier de sortie que le fichier untel est présent/existe.

    Voici ma boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f "delims=" %%i in ('type %FileTemp%') do ( 
    	if exist "%%i" (
    		echo [Fichier présent]--- %%i >>%$log%
    	)
    )
    Le problème, c'est pour les fichiers dont je ne connais pas le nom exacte mais juste une partie. Exemple de fichier :

    %WINDIR%\3d8c097a-d75d-43d1-aa88-eb4ad99df514-1.exe

    Les caractères sont aléatoire mais le nom à toujours le même nombre de caractère puis un - puis même nombre de caractères encore un - etc... pour finir par l’extension que je connais aussi.
    Donc dans mon fichier lu ligne par ligne j'utilise le jocker * pour les caractères inconnus, ce qui donne donc comme ligne:

    %WINDIR%\*-*-*-*-*-*.exe

    Si le fichier 3d8c097a-d75d-43d1-aa88-eb4ad99df514-1.exe existe, pas de soucis, il est bien détecté, seulement dans le fichier de sortie ça va marquer [Fichier présent]--- %WINDIR%\*-*-*-*-*-*.exe.
    Ce que je voudrait c'est obtenir le nom réel du fichier, en sachant qu'il y a beaucoup de fichiers testés pour très peu dont je ne connais pas le nom exacte donc je ne peux pas trop alourdir le code/la boucle qui sera exécuté pour chaques lignes/fichiers testés en sachant que très peu sont concernés par le joker *.

    J'espère avoir été assez clair dans mon explication.
    Merci par avance de votre attention.

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    utilise juste les delimiteurs :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f "delims=" %%i in ('type %FileTemp%') do ( 
    	if exist "%%i" (
    		echo [Fichier présent]--- %%~nxi >>%$log%
    	)
    )

    Si il te faut le chemin complet :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    echo [Fichier présent]--- %%~dpnxi >>%$log%

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    C'est nickel merci beaucoup.
    Et dans le cas ou je connais le nom du fichier (que je voudrais supprimer), je connais son emplacement également sauf un répertoire dont le nom est aléatoire, exemple:

    C:\Windows\System32\nom_aleatoire\fichier.exe

    Est-ce possible de trouver le nom du répertoire ?

    Merci beaucoup

  4. #4
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Par contre j'ai un autre problème, c'est que quand j'ai ce type de fichier, il y en a plusieurs. Et forcément quand la boucle tombe sur %WINDIR%\*-*-*-*-*-*.exe elle ne traite que le premier fichier trouvé et pas les autres.
    Si je met plusieurs lignes comme ceci dans mon fichier:

    %WINDIR%\*-*-*-*-*-*.exe
    %WINDIR%\*-*-*-*-*-*.exe
    %WINDIR%\*-*-*-*-*-*.exe
    ......

    Seul le premier fichier trouvé est traité plusieurs fois (le nombre de ligne que je met) ce qui est logique. Pour ce cas précis j'ai pu trouver une solution car les fichiers sont comme ceci :

    3d8c097a-d75d-43d1-aa88-eb4ad99df514-1.exe
    3d8c097a-d75d-43d1-aa88-eb4ad99df514-2.exe
    3d8c097a-d75d-43d1-aa88-eb4ad99df514-3.exe
    3d8c097a-d75d-43d1-aa88-eb4ad99df514-4.exe
    ........

    J'ai donc mis :

    %WINDIR%\*-*-*-*-*-1.exe
    %WINDIR%\*-*-*-*-*-2.exe
    %WINDIR%\*-*-*-*-*-3.exe
    ...... jusque 9

    Mais dans le cas ou il n'y aurait pas de suite logique, comment puis-je faire pour traiter tous les fichiers rencontrés et pas seulement le premier ?
    Et aussi pour le problème que j'ai mentionné plus haut, savoir comment récupérer le nom d'un répertoire aléatoire quand on connais le reste du chemin et le nom du fichier qu'il contient ?

    Merci de votre intérêt...

  5. #5
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Personne n'a une idée? Ou ce n'est peut être pas possible de le récupérer ?

  6. #6
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Pour récuperer tous les fichiers :

    Met une autre boucle dans la première :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f "delims=" %%i in ('type %FileTemp%') do (
    	for /f "delims=" %%a in ('dir /a-d/b "%%i" 2^>nul') do (
    		echo [Fichier présent]--- %%~nxa
    	)
    )

    Et une technique pour récuperer le nom du repertoire contenant un fichier :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    ;;Le nom du fichier connu
    set $find="test.bat"
     
    for /f "delims=" %%a in ('dir /s/a-d/b *.*') do (
      echo "%%~nxa" | find /i %$find% && echo nom du repertoire : "%%~dpa")

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  7. #7
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Comme tout à l'air si simple pour vous alors que je vais moi me creuser la tête x temps pour trouver...
    Je teste ça et je vous redis ce qu'il en est.

  8. #8
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Alors pour récupérer tous les fichiers, le code plante, le script se ferme, mais ça vient probablement de moi, problème de syntaxe certainement car j'ai essayé le code dans mon script principale et non isolé tout seul.
    Je n'ai pas creusé la chose encore vu que pour le moment j'ai contourné le problème mais je vais regarder après ça dès que j'ai du temps pour.
    Et pour récupérer le nom du répertoire inconnu, là, pas de soucis ça marche nickel, merci beaucoup.

  9. #9
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    J'ai corrigé le code. Il y avait effectivement un bug. J'avais pas testé.
    Refais un test.

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  10. #10
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Excellent, ça fonctionne nickel. Merci beaucoup.

  11. #11
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    bonjour, je retire temporairement le résolu, car de la même manière j'essaie d'obtenir la même chose mais pour des noms de répertoires aléatoires dont je ne connais qu'une partie du nom.
    Je bloque sur la syntaxe de la variable à utiliser pour récupérer le chemin du répertoire puis son nom complet, et ce pour chaques répertoires dont la partie du nom connu est identique.

    Merci de votre aide.

  12. #12
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Exactement de la même manière en changeant juste le DIR pour n'afficher que les répertoires.
    Il faut juste changer une lettre au code que je t'ai fait.


    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

Discussions similaires

  1. Trouver des noms de fichiers avec des caractères non ASCII
    Par llaffont dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/10/2012, 14h06
  2. Noms de fichiers avec des caractères spéciaux
    Par weabow dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/11/2010, 15h51
  3. [RCP 3.4.2]nom de répertoire avec des caractères arabes
    Par Fabien[ALT] dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 10/07/2009, 12h44
  4. Impossible d'ouvrir nom de fichier avec des accents
    Par sargei dans le forum Langage
    Réponses: 15
    Dernier message: 10/06/2009, 10h46
  5. Réponses: 1
    Dernier message: 31/10/2006, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo