2017-05-11 2 views
1

J'ai un fichier batch où j'appelle une application en passant certains arguments.Est-ce une bonne pratique de modifier le répertoire de travail actuel dans le fichier batch?

Voici le contenu de mon fichier sample.batch

cd C:\Program Files\MyApplication 
"C:\Program Files\MyApplication\Application.exe" -e -p "Application Projects/Testing/General/Notepad" -rm "Close Notepad" 

Ici, je dois changer mon répertoire de travail courant dans le dossier où vit Application.exe de sorte qu'il trouve certains fichiers JAR requis qui est situé dans ce dossier.Il est préférable de le faire? Modification du répertoire de travail en cours avant d'exécuter un fichier de commandes.

+2

note, 'a cd' le paramètre'/d' utile. 'pushd' /' popd' est une autre option. – Stephan

Répondre

2

Une méthode est ce que Magoo et Stephan ont déjà suggéré:

pushd "%ProgramFiles%\MyApplication" 

rem Other commands. 

popd 

Cette solution fonctionne même pour les chemins UNC avec les extensions de commandes activées que par défaut comme PUSHD mappe temporairement le partage réseau sur une lettre de lecteur et rend ce lecteur réseau le répertoire en cours.

Une autre solution utilise SETLOCAL, CD et ENDLOCAL qui a l'avantage de toutes les modifications des variables d'environnement, les extensions de commandes et de l'expansion retardée fait par les commandes entre setlocal et endlocal ne comptent pas pour les commandes après endlocal ligne de commande.

setlocal EnableExtensions DisableDelayedExpansion 
cd /D "%ProgramFiles%\MyApplication" 

rem Other commands running in their own environment, here running with command 
rem extensions explicitly enabled and delayed expansion explicitly disabled. 

endlocal 

La commande ENDLOCAL restaure également le répertoire en cours comme étant mis sur l'exécution de SETLOCAL.

Voir la réponse sur change directory command cd ..not working in batch file after npm install avec plus de détails sur PUSHD (push répertoire), POPD (répertoire pop), SETLOCAL (configuration de l'environnement local), CD (répertoire de modification) et ENDLOCAL (fin de l'environnement local). Pour comprendre les commandes utilisées et leur fonctionnement, ouvrez une fenêtre d'invite de commande, exécutez les commandes suivantes et lisez attentivement toutes les pages d'aide affichées pour chaque commande.

  • cd /?
  • endlocal /?
  • rem /?
  • setlocal /?
  • popd /?
  • pushd /?
4

Essayez

pushd C:\Program Files\MyApplication 
... 
popd 

comme un autre choix.

meilleures pratiques est une question à la fois l'opinion et les circonstances