22 Stimmen

Was ist der Grund dafür, dass sich der Pfad einer Batchdatei, auf die mit %~dp0 verwiesen wird, bei einem Verzeichniswechsel manchmal ändert?

Ich habe eine Batch-Datei mit folgendem Inhalt:

echo %~dp0
CD Arvind
echo %~dp0

Auch nach der Änderung des Verzeichniswertes von %~dp0 ist die gleiche. Wenn ich jedoch diese Batch-Datei aus dem CSharp-Programm ausführe, wird der Wert von %~dp0 Änderungen nach CD . Er verweist nun auf das neue Verzeichnis. Im Folgenden finden Sie den von mir verwendeten Code:

Directory.SetCurrentDirectory(//Dir where batch file resides);
ProcessStartInfo ProcessInfo;
Process process = new Process();
ProcessInfo = new ProcessStartInfo("mybatfile.bat");
ProcessInfo.UseShellExecute = false;
ProcessInfo.RedirectStandardOutput = true;
process = Process.Start(ProcessInfo);
process.WaitForExit();
ExitCode = process.ExitCode;
process.Close();

Warum gibt es einen Unterschied in der Ausgabe, wenn dasselbe Skript auf verschiedenen Wegen ausgeführt wird?

Habe ich hier etwas übersehen?

-3voto

LaGrandMere Punkte 10177

Jede neue Zeile in Ihrem Batch, die von Ihrem ProcessStart aufgerufen wird, wird unabhängig als neuer cmd-Befehl betrachtet.

Wenn Sie es zum Beispiel so versuchen:

echo %~dp0 && CD Arvind && echo %~dp0

Es funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X