5 votes

Comment exécuter un fichier batch MS-DOS/Win9x contenant un CD tout en préservant le répertoire de travail original ?

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 ?

2voto

darkuncle Points 61

Cela fonctionne même avec MSDOS6.22.

pwd.bat

@echo off

@echo @prompt @set drive=$N:$_ @set pwd=$P> temp.bat
%comspec% /c temp.bat > temp2.bat
call temp2.bat
del temp.bat
del temp2.bat
echo %PWD%

Il stocke le répertoire courant dans le fichier pwd et l'entraînement du courant dans la lecteur variable.

Ceci peut être utilisé pour restaurer le répertoire précédent.

Dans votre cas

@echo off
call pwd.bat

CD C:\SOFTWARE
program.exe

%drive%
cd %pwd%

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X