Considérons le fichier batch suivant test.bat
:
CD C:\SOFTWARE
program.exe
Ce script est exécuté à partir de C:\ELSWHERE
C:\ELSWHERE> C:\test.bat
Après la sortie du script le répertoire de travail actuel est maintenant C:\SOFTWARE
et non le répertoire de travail précédent C:\ELSWHERE
.
Le script change le répertoire de travail en C:\SOFTWARE
parce que program.exe
nécessite config.ini
qui est situé à C:\SOFTWARE
et le localise en utilisant le répertoire de travail actuel. Si le logiciel program.exe
devait être exécuté directement à partir de, disons, C:\
o C:\ELSWHERE
en utilisant son nom de chemin absolu, le programme sera incapable de lire sa configuration et lancera une erreur. La solution à ce problème consiste à CD
au C:\SOFTWARE
et lancez le programme à partir de là.
Le problème de cette opération dans un fichier batch est qu'elle modifie également le répertoire de travail de l'environnement précédent, qu'il s'agisse du répertoire de travail de l'hôte COMMAND.COM ou d'un autre fichier batch.
Ce n'est pas un problème à partir d'une invite de commande basée sur NT, qui a accès aux données suivantes pushd
y popd
ainsi que d'autres variables d'environnement utiles pour préserver l'ancien répertoire de travail. Mais est-il possible de le faire en respectant les contraintes de l'ancien système MS-DOS ? \Win9x command.com ?