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 :

batch copy en tant qu'administrateur et chemin relatif


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut batch copy en tant qu'administrateur et chemin relatif
    Bonjour,

    Je me retrouve face à un problème, qui à la base devait être simple...

    Je doit faire un batch qui va copier un fichier dans le répertoire Windows et sur le bureau de all Users, sous Windows 7.

    Ce fichier à copier, ainsi que le batch, vont êtres synchronisés sur plusieurs serveurs, donc le chemin absolu va différer, ce qui m'oblige à utiliser un chemin relatif dans le batch pour accéder à mon fichier à copier (le batch se trouve au même niveau que le répertoire contenant le fichier à copier).

    Si je lance mon batch par un double clic normal, sans élévation de privilèges, j'ai un accès refusé, ce qui est normal car je copie dans le répertoire Windows.

    Si je lance le batch "en tant qu'administrateur" par un clic droit, alors il ne trouve pas mes fichiers à copier, car il s’exécute dans "System32", et comme c'est un chemin relatif, il ne les trouves pas...

    Auriez-vous une solution?

  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
    Par défaut
    Salut,

    As-tu essayé d'utiliser les variables d'environnement (%comspec%,%windir%, etc...) à la place d'un chemin en clair.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut
    Citation Envoyé par sachadee Voir le message
    Salut,

    As-tu essayé d'utiliser les variables d'environnement (%comspec%,%windir%, etc...) à la place d'un chemin en clair.
    Le problème n'est pas la destination mais la source. Le contenu de mon batch:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rem installation du client TeamViewer en cours
    Copy ".\Sources\TeamViewer Client 9\TeamViewer_Client.exe" %windir%
    Copy ".\Sources\TeamViewer Client 9\Team Viewer Client.lnk" %public%\desktop\
    pause
    En exécutant le batch avec mes droits (double clic), je n'ai pas le droit sous Windows 7 de copier dans le répertoire Windows:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    D:\Cle USB CI\Logiciels>Copy ".\Sources\TeamViewer Client 9\TeamViewer_Client.exe" C:\windows
    Accès refusé.
    En exécutant le batch "en tant qu'administrateur" (clic droit), il ne retrouve pas ".\Sources\TeamViewer Client 9\..." car il s’exécute dans system32:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\windows\system32>Copy ".\Sources\TeamViewer Client 9\TeamViewer_Client.exe" C:\windows
    Le chemin d'accès spécifié est introuvable.
    Dans mon batch, pour régler le problème, il faudrait mettre le chemin d'accès complet, mais comme ces fichiers (et le batch) vont être synchronisés sur plusieurs serveurs qui n'ont pas forcément la même arborescence, ça ne peu pas fonctionner.

    Je ne peu également pas copier les fichiers ailleurs (ce n'est pas moi qui l'impose).

  4. #4
    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
    Par défaut
    Tu pourrais tester les lecteurs présent. Si il sont present tu fais la copie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%a: Copy ".\Sources\TeamViewer Client 9\TeamViewer_Client.exe" %%a:\windows
    C'est une idée que tu peux peut-être développer.


  5. #5
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Il n'est pas recommandé d'installer des logiciels (même portables) directement dans le windir!
    Je te propose ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    @echo off & cls
    setlocal enabledelayedexpansion
    
    set Source=%CD%
    IF (%PROCESSOR_ARCHITECTURE%)==(AMD64) (GOTO 64-Bit) ELSE (GOTO 32-Bit)
    :64-Bit
    set ProgramsFiles=%ProgramFiles%
    GOTO Next
    :32-Bit
    set ProgramsFiles=%ProgramFiles(x86)%
    
    :Next
    md "%ProgramsFiles%\TeamViewer"
    
    set TeamViewerexe=TeamViewer_Client.exe
    set TeamViewerlnk=Team Viewer Client.lnk
    
    if not exist "%ProgramsFiles%\TeamViewer\!TeamViewerexe!" copy "%Source%\!TeamViewerexe!" "%ProgramsFiles%\TeamViewer\"
    if not exist "%public%\Desktop\!TeamViewerlnk!" copy "%Source%\!TeamViewerlnk!" "%public%\Desktop\"
    	
    pause
    Quelques informations:
    - %PROCESSOR_ARCHITECTURE% -> Connaitre si ton système est en 32 ou 64 bits
    - Source=%CD% -> Source = le chemin vers ton .exe|.lnk et %CD% = Le chemin absolut d'où se trouve le script .bat que tu exécutes
    - set TeamViewerexe=TeamViewer_Client.exe -> tu définis le nom du fichier.exe

    Cette façon de faire est "avantageuse" pour ces raisons:
    - Tu respectes bien les répertoires d'installation de Windows
    - Tu ne seras pas embêter par des soucis de droit d'écriture
    - Évite des soucis potentiels générés par les choses que tu installes directement dans la racine de Windows...

    Bref après tu fais comme tu veux, ce n'est qu'un conseil.

    PS: Code testé en partie et sur du Windows 7 x64

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut
    Citation Envoyé par devilsnake88 Voir le message
    Il n'est pas recommandé d'installer des logiciels (même portables) directement dans le windir!
    Je te propose ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    @echo off & cls
    setlocal enabledelayedexpansion
    
    set Source=%CD%
    IF (%PROCESSOR_ARCHITECTURE%)==(AMD64) (GOTO 64-Bit) ELSE (GOTO 32-Bit)
    :64-Bit
    set ProgramsFiles=%ProgramFiles%
    GOTO Next
    :32-Bit
    set ProgramsFiles=%ProgramFiles(x86)%
    
    :Next
    md "%ProgramsFiles%\TeamViewer"
    
    set TeamViewerexe=TeamViewer_Client.exe
    set TeamViewerlnk=Team Viewer Client.lnk
    
    if not exist "%ProgramsFiles%\TeamViewer\!TeamViewerexe!" copy "%Source%\!TeamViewerexe!" "%ProgramsFiles%\TeamViewer\"
    if not exist "%public%\Desktop\!TeamViewerlnk!" copy "%Source%\!TeamViewerlnk!" "%public%\Desktop\"
    	
    pause
    Quelques informations:
    - %PROCESSOR_ARCHITECTURE% -> Connaitre si ton système est en 32 ou 64 bits
    - Source=%CD% -> Source = le chemin vers ton .exe|.lnk et %CD% = Le chemin absolut d'où se trouve le script .bat que tu exécutes
    - set TeamViewerexe=TeamViewer_Client.exe -> tu définis le nom du fichier.exe

    Cette façon de faire est "avantageuse" pour ces raisons:
    - Tu respectes bien les répertoires d'installation de Windows
    - Tu ne seras pas embêter par des soucis de droit d'écriture
    - Évite des soucis potentiels générés par les choses que tu installes directement dans la racine de Windows...

    Bref après tu fais comme tu veux, ce n'est qu'un conseil.

    PS: Code testé en partie et sur du Windows 7 x64
    Merci, j'y ai pensé, mais comme dit plus haut, ce n'ai pas moi qui l'impose... Ce n'est pas pour une utilisation personnel.

Discussions similaires

  1. Batch - Windows 7 - Administrateur et Chemin Relatif
    Par islogged dans le forum Windows 7
    Réponses: 3
    Dernier message: 24/02/2011, 18h32
  2. Fichier batch - copie conforme d'un dossier
    Par Le_Che dans le forum Windows
    Réponses: 1
    Dernier message: 20/11/2006, 15h47
  3. Réponses: 1
    Dernier message: 28/09/2006, 13h09
  4. fichier batch (copie depuis lecteur réseau avec mot de passe
    Par Mickey34 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 09/02/2006, 22h33
  5. Batch : copy d'un répertoire avec des espaces
    Par krfa1 dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 26/10/2005, 12h47

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