Rumah > pembangunan bahagian belakang > C++ > Mengapakah `%~dp0` Menukar Laluan Direktori Apabila Dipanggil daripada C#?

Mengapakah `%~dp0` Menukar Laluan Direktori Apabila Dipanggil daripada C#?

Patricia Arquette
Lepaskan: 2025-01-09 21:47:42
asal
674 orang telah melayarinya

Why Does `%~dp0` Change Directory Paths When Called from C#?

Memahami Perubahan Laluan dengan %~dp0 dalam Fail Kelompok Dipanggil daripada C#

Melaksanakan fail kelompok yang mengandungi:

echo %~dp0
CD Arvind
echo %~dp0
Salin selepas log masuk

daripada program C# boleh menghasilkan laluan yang diubah suai dipaparkan oleh %~dp0 selepas arahan CD. Tingkah laku ini tidak konsisten dengan pelaksanaan terus fail kelompok.

Punca Punca:

Tingkah laku ini disebabkan oleh cara cmd.exe mengendalikan pembolehubah %~0. Apabila dilancarkan daripada C#, hujah yang dipetik ("%~0") mungkin tidak dipetik secara dalaman, membawa kepada rujukan laluan relatif untuk fail kelompok dan bukannya laluan mutlak.

Menyelesaikan Isu Laluan

Berikut ialah penyelesaian untuk memastikan perolehan laluan yang konsisten:

Daripada C#:

  1. Tinggalkan Petikan: Panggil fail kelompok tanpa petikan: cmd /c batchfile.cmd

  2. Sediakan Laluan Penuh: Jika petikan diperlukan, nyatakan laluan lengkap ke fail kelompok dalam arahan C#.

Daripada Fail Kelompok:

Gunakan subrutin untuk menentukan laluan fail kelompok dengan pasti:

@echo off
setlocal enableextensions disabledelayedexpansion

call :getCurrentBatch batchPath
echo %batchPath%

exit /b

:getCurrentBatch variableName
    set "%~1=%~f0"
    goto :eof
Salin selepas log masuk

Subrutin ini menggunakan %~f0 untuk mendapatkan laluan yang layak sepenuhnya bagi fail kelompok, menyimpannya dalam pembolehubah yang ditentukan. Kaedah ini mengelakkan ketidakkonsistenan yang timbul daripada kelakuan pembolehubah %~dp0 apabila dipanggil daripada aplikasi luaran.

Atas ialah kandungan terperinci Mengapakah `%~dp0` Menukar Laluan Direktori Apabila Dipanggil daripada C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan