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 :

Chemin -> Variable en Nom Court [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut Chemin -> Variable en Nom Court
    Bonjour !

    J'ai fait un batch pour comparer des fichiers customizés avec ceux de windows...

    J'ai créé un fichier "Comparaison_Totale.txt" où sont notés les chemins complets et noms de tous les fichiers systèmes que j'ai customizé. (par exemple "C:\windows\system32\zipfldr.dll")

    J'ai la possibilté de faire :
    • une comparaison totale de l'ensemble des fichiers :
    _____▪ mon batch traite ligne par ligne "Comparaison_Totale.txt" et à chaque fois compare le fichier customizé avec celui du système.

    • une comparaison partielle :
    _____▪ mon batch traite ligne par ligne "Comparaison_Totale.txt" et dès qu'un fichier se trouve dans le dossier "Partielle", inscrit le chemin du fichier système portant le même nom dans "Comparaison_Partielle.txt",
    _____▪ puis, traite ligne par ligne "Comparaison_Partielle.txt" et à chaque fois compare le fichier customizé situé dans le dossier "Partielle" avec celui du système.

    La position de mon batch sur mes disques durs pouvant changer, j'ai utilisé "%~dp0%Partielle" pour connaître le chemin complet du dossier "Partielle" quelquesoit la position du batch.

    Quand je lance une comparaison totale, quelquesoit le chemin du batch -> tout marche nickel !
    Quand je lance une comparaison partielle et que le chemin du batch ne comporte pas d'espace -> tout marche très bien !
    Malheureusement quand le nom du répertoire en cours comporte un ou des espaces, mon batch ne fonctionne plus...

    Je pense que le problème vient de la fonction "exist" dans "if exist %Dossier%\%Fichier% echo %FichierRef% >> Comparaison_Partielle.txt"

    N'étant pas très doué en batch, quelqu'un pourrait-il m'aider ?

    Merci...

  2. #2
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Après recherche, il semblerait que ce ne soient pas les espaces le problème, mais il faudrait que je puisse transformer la déclaration comportant le chemin du dossier "partielle" en nom court...

    Voici mon batch...
    c'est au niveau de :cmdPartieSys (presque à la fin) que ça bloque, je pense...
    Fichiers attachés Fichiers attachés

  3. #3
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Même pas une âme charitable pour faire l'éssai sur mon batch... ?
    Peut-être ai-je mal identifié le problème...?!

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Le test doit comporter aussi des guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if exist "%Dossier%\%Fichier%" echo %FichierRef%>> Comparaison_Partielle.txt
    Pour les noms courts, cf. l'expansion %~sI, qui génère des noms courts.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Merci pour ta réponse !

    J'ai remis tous les guillemets manquants, mais je ne comprends pas dans quelle fonction placer ton "%~sI"...
    J'avais déjà vu cette expansion en parcourant les forums, mais n'est pas trouvé comment l'utiliser...

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

    Autre question : certains fichiers système ne pouvants être remplacés sans avoir été renommés, je les renommais en ajoutant un o à l'extension (par exemple *.dll -> *.dllo), mais visiblement mon batch ne reconnait pas les extension de plus de 3 caractères...

    Comment faire ?
    Si ce n'est pas possible comment remplacer la dernière lettre de l'extension par un o (*.dll -> *.dlo ou *.exe -> *.dlo) ?

  6. #6
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Pour ma deuxième question, j'ai vu qu'il existe dans le même ordre d'idée que ce que tu m'as montré : "%~xI", mais je n'arrive pas non plus à comprendre comment l'utiliser...

  7. #7
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Je commence à voir (désolé je suis un peu lent) que je peux décomposer mon nom de fichier (nom + extension) avec ""%~n1%~x1", mais comment ne changer que la dernière lettre de l'extension ?

  8. #8
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Pour extraire tous les caractères de la variable Var sauf le dernier on utilise ""Set Var=%Var:~0,-1%",
    le 0 correspond au premier caractère,
    le -1 correspond au nombre total de caractères -1 (en mettant un nombre positif, on compte à partir de la gauche),

    En espèrant que cela serve à quelqu'un un jour...

    Pas sympa le forum, si quand on demande de l'aide, on se retrouve à dialoguer avec soi-même pour résoudre ses problèmes !!!

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    J'ai remis tous les guillemets manquants, mais je ne comprends pas dans quelle fonction placer ton "%~sI"...
    Sur les paramètres du batch (%1, %2, ...) ou les variables de boucle (%%I, %%J, ...) uniquement.

    Citation Envoyé par Scoubi7 Voir le message
    mais visiblement mon batch ne reconnait pas les extension de plus de 3 caractères...
    Ben en noms courts, c'est tout à fait normal...

    Citation Envoyé par Scoubi7 Voir le message
    Comment faire ?
    Si ce n'est pas possible comment remplacer la dernière lettre de l'extension par un o (*.dll -> *.dlo ou *.exe -> *.dlo) ?
    Passer en noms longs (=> attention aux guillemets !!), ou utiliser la substitution.
    Admettons que la variable FILENAME contienne le nom d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set new_name=%FILENAME:~0,-1%o
    Citation Envoyé par Scoubi7 Voir le message
    je n'arrive pas non plus à comprendre comment l'utiliser...
    Parce qu'il faut écrire %~nx1.

    Citation Envoyé par Scoubi7 Voir le message
    Pas sympa le forum, si quand on demande de l'aide, on se retrouve à dialoguer avec soi-même pour résoudre ses problèmes !!!
    Pardonnes-nous de répondre en moins de deux heures à tes questions, et de ne pas camper sur le forum avec le doigt sur F5...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  10. #10
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Merci d'avoir répondu, mais comme tu peux le voir avec ma dernière réponse j'avais trouvé la solution tout seul comme un grand...

    Et même si je comprend que le WE, vous ayez autre chose à faire, depuis le 14 ça fait un peu plus de 2 heures même en ne comptant que le temps passé depuis ce matin... J'avais l'impression d'avoir été abandonné tout seul avec mon problème...

    Mais encore une fois, merci d'avoir pris du temps pour me répondre !!!

  11. #11
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Si encore une question après, je ne vous embête plus (enfin j'espère)...
    Comment ne pas faire apparaître les opérations effectuées ou non (après une copie par exemple), je me suis créer un fichier texte de compte rendu et n'ai donc pas besoin que ça s'affiche sur ma commande dos ?


    Oupps !!! j'ai trouvé en en ajoutant >nul derrière la commande...

    T'as encore pas été assez rapide avec la touche F5

  12. #12
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Et même si je comprend que le WE, vous ayez autre chose à faire, depuis le 14 ça fait un peu plus de 2 heures même en ne comptant que le temps passé depuis ce matin... J'avais l'impression d'avoir été abandonné tout seul avec mon problème...
    Ben déjà, c'est Lundi et non pas le WE, et puis je t'ai répondu aujourd'hui à 13h47 : je n'avais pas vu ton post avant cela... Puis je t'ai répondu à 17h43 sur ta question posée à 16h08, donc moins de 2h après... Vérifie, les posts sont datés, c'est en haut à gauche de chaque message, dans le bandeau bleu sombre.

    Citation Envoyé par Scoubi7 Voir le message
    Oupps !!! j'ai trouvé en en ajoutant >nul derrière la commande...
    Sauf que tu verras malgré tout certains messages d'erreurs, notamment si tu tentes d'effacer un fichier inexistant.

    Pour vraiment faire taire une commande DOS, tu dois taper ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande avec ses paramètres > NUL 2>&1
    Ceci redirige bien sûr la sortie standard vers NUL (=> les sorties "normales" sont supprimées), mais également la sortie d'erreur (=> plus rien ne s'affiche).
    Attention toutefois : dans ce mode, si jamais la commande DOS attends une saisie au clavier, tu ne verras aucun message s'afficher !! A tester donc avec sérieux avant de rendre la commande muette "pour de bon".
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  13. #13
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    OK merci pour l'info !!!

    Et c'est confirmé je ne vous embête plus car tout marche nickel !

  14. #14
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Et c'est confirmé je ne vous embête plus car tout marche nickel !
    Tant mieux. Et tu ne nous embêtes pas : si on ne veut pas répondre, on ne le fait pas. Si on le fait, c'est qu'on le veut bien...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/11/2010, 11h12
  2. Nom Court d'un chemin
    Par ZIED dans le forum Delphi
    Réponses: 4
    Dernier message: 02/10/2006, 00h10
  3. [ASP] include remplacer chemin par variable
    Par damn dans le forum ASP
    Réponses: 3
    Dernier message: 01/10/2004, 15h27
  4. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58
  5. [FLASH MX2004] Chemin de variable
    Par nirousse dans le forum Flash
    Réponses: 2
    Dernier message: 09/08/2004, 11h56

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