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 une portion de l'emplacement du batch


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2020
    Messages : 36
    Par défaut Récupérer une portion de l'emplacement du batch
    Bonjour à tous,

    Je possède un script batch situé sur un mappage réseau dont le chemin s'apparente à celui-ci : Y:\abc\def\ghi\jkl\script.bat

    Dans ce script, je récupère le chemin de celui-ci à l'aide de %~dp0 auquel je rajoute le chemin vers une application située dans un sous dossier "outils", ce qui donne ceci : "%~dp0\outils\application.exe"

    Si ce lecteur réseau n'est plus mappé pour une raison quelconque, je dois exécuter le script depuis le chemin complet, à savoir : \\serveur123\partage$\abc\def\ghi\jkl\script.bat

    Ce que je voudrais en fait c'est que le script récupère toujours le chemin complet (\\serveur123\partage$\abc...) même lorsqu'il est lancé depuis le lecteur Y:

    Je ne souhaite pas écrire en dur le chemin complet dans mon script au cas où il sera amené à changer. Je peux néanmoins conserver cette portion : \\serveur123\partage$\abc

    Comment puis-je faire concrètement cela ? Il faudrait pouvoir segmenter l'emplacement actuel et récupérer l'emplacement à partir du dossier abc

    Merci d'avance pour votre éclairage.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Test ceci

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    cls
     
    IF "%~d0" == "\\" (
    	SET chemin=%~dp0
    ) ELSE (
    	FOR /F "tokens=2,*" %%a IN ('net use %~d0 2^>nul^|find "Nom distant"') DO set chemin=%%~b%~p0
    )
     
    echo chemin : %chemin%
    pause
    exit

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Ou comme ceci ça permet aussi de fonctionner si le fichier est en local

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    cls
     
    FOR /F "tokens=2,*" %%a IN ('net use %~d0 2^>nul^|find "Nom distant"') DO set chemin=%%~b%~p0
    IF NOT DEFINED chemin SET chemin=%~dp0
     
    echo chemin : %chemin%
    pause
    exit

  4. #4
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2020
    Messages : 36
    Par défaut
    Que signifie %%~b%~p0 dans la commande ?

    Comment puis-je l'intégrer au sein d'une boucle existante comme celle-ci :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for /f "tokens=*" %%I in ('dir /a:d-h /b "%SystemDrive%\Users\*" ^| findstr /x /i /l /v /g:"%~dp0\outils\exclude_users.txt"') do if exist "%Destination%\%%~nxI\" (
    ...
    )
    J'ai essayé mais la variable %chemin% a été ignorée..

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Essai déjà juste le bout de code seulement pour voir si le résultat est correcte. On l'intégrera après

  6. #6
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2020
    Messages : 36
    Par défaut
    Oui ça fonctionne bien. Je préfère intégrer le 2ème toutefois.

Discussions similaires

  1. Récupérer une donnée requête SQL sur un BATCH
    Par SimFaridas dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 06/12/2018, 17h11
  2. [RegEx] Récupérer une portion d'une div
    Par apt dans le forum Langage
    Réponses: 18
    Dernier message: 15/06/2011, 19h40
  3. [WD11] Récupérer une portion de chaine
    Par Redg9 dans le forum WinDev
    Réponses: 3
    Dernier message: 18/05/2010, 13h43
  4. [RegEx] Récupérer une portion de chaine délimitée par une autre chaine
    Par AnkyFive dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2007, 08h24
  5. [batch] récupérer une saisie utilisateur
    Par yelbied dans le forum Windows
    Réponses: 5
    Dernier message: 28/08/2007, 15h34

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