%~dp0 perbezaan rujukan laluan dalam fail kelompok
Latar belakang:
Dalam fail kelompok, %~dp0 mewakili laluan direktori lokasi semasa fail kelompok. Apabila menukar direktori semasa (CD), biasanya nilai %~dp0 akan dikemas kini untuk mencerminkan direktori baharu.
Soalan:
Walau bagaimanapun, pengguna telah melihat perbezaan dalam kelakuan %~dp0 apabila melaksanakan fail kelompok melalui program C#. %~dp0 mengekalkan nilai asalnya apabila dilaksanakan secara langsung, tetapi berubah apabila dipanggil daripada C#.
Analisis:
Perbezaan ini disebabkan oleh cara %~0 (nama fail kelompok yang tidak diubah suai) dikendalikan apabila fail kelompok dipanggil dengan petikan.
Penyelesaian:
Untuk menyelesaikan masalah ini, dua kaedah disyorkan:
Daripada kod C#:
ProcessStartInfo.FileName = "mybatfile.bat";
Daripada fail kelompok:
<code class="language-batch">@echo off setlocal enableextensions disabledelayedexpansion call :getCurrentBatch batch echo %batch% exit /b :getCurrentBatch variableName set "%~1=%~f0" goto :eof</code>
Atas ialah kandungan terperinci Mengapakah %~dp0 Menghasilkan Keputusan Berbeza Apabila Fail Kelompok Dilaksanakan Secara Terus berbanding melalui C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!