Maison >développement back-end >C++ >Pourquoi %~dp0 donne-t-il des résultats différents lorsqu'un fichier batch est exécuté directement ou via C# ?
%~dp0 différence de référence de chemin dans le fichier batch
Contexte :
Dans le fichier batch, %~dp0 représente le chemin du répertoire de l'emplacement actuel du fichier batch. Lors du changement du répertoire actuel (CD), il est généralement prévu que la valeur de %~dp0 soit mise à jour pour refléter le nouveau répertoire.
Question :
Cependant, les utilisateurs ont observé des différences dans le comportement de %~dp0 lors de l'exécution d'un fichier batch via un programme C#. %~dp0 conserve sa valeur d'origine lorsqu'il est exécuté directement, mais change lorsqu'il est appelé depuis C#.
Analyse :
Cette différence est due à la façon dont %~0 (le nom du fichier batch non modifié) est géré lorsque le fichier batch est appelé avec des guillemets.
Solution :
Afin de résoudre ce problème, deux méthodes sont recommandées :
À partir du code C# :
ProcessStartInfo.FileName = "mybatfile.bat";
À partir du fichier batch :
<code class="language-batch">@echo off setlocal enableextensions disabledelayedexpansion call :getCurrentBatch batch echo %batch% exit /b :getCurrentBatch variableName set "%~1=%~f0" goto :eof</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!