Saya tahu itu %0berisi path lengkap skrip batch, misc:\path\to\my\file\abc.bat
Saya akan pathsama denganc:\path\to\my\file
Bagaimana saya bisa mencapainya?
Saya tahu itu %0berisi path lengkap skrip batch, misc:\path\to\my\file\abc.bat
Saya akan pathsama denganc:\path\to\my\file
Bagaimana saya bisa mencapainya?
Jawaban:
%~dp0akan menjadi direktori. Berikut ini beberapa dokumentasi pada semua pengubah jalur . Hal menyenangkan :-)
Untuk menghapus garis miring terbalik terakhir, Anda dapat menggunakan :n,msintaksis substrat, seperti:
SET mypath=%~dp0
echo %mypath:~0,-1%
Sayangnya, saya tidak percaya ada cara untuk menggabungkan %0sintaksis dengan :~n,msintaksis.
%~0\..- tahu harus ada cara yang lebih baik! Juga, Anda mungkin ingin menyertakan %~dp0tanda kutip ganda ( "") jika ada spasi dalam nama direktori, dll.
%~dp0berisi `` di bagian akhir. Apakah Anda punya ide cara menghapusnya?
SET msg=hello worldberfungsi dengan baik). Namun, ketika menggunakan% mypath% di tempat lain Anda ingin berhati-hati menggunakannya dalam tanda kutip, meskipun mereka tidak diperlukan cdjuga.
Anda dapat menggunakan skrip berikut untuk mendapatkan lintasan tanpa mengeklik "\"
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0mungkin jalur relatif. Untuk mengonversinya menjadi jalur lengkap, coba sesuatu seperti ini:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0secara langsung?
%~dp0dapat bersifat relatif, yang mungkin atau mungkin tidak menjadi masalah tergantung pada kasus penggunaan
%~dp0tidak dapat berisi path relatif, dsingkatan drive dan ppath, bagaimana drive bisa relatif?
%~dp0akan menjadi path absolut bahkan ketika skrip dijalankan sebagai path relatif. Berkat komentar jeb, saya tidak tertipu oleh jawaban ini. Mengapa orang hanya membuat barang dan pergi dan mulai menyebarkan imajinasi liar mereka kepada orang lain. Saya memiliki rekan ini yang melakukan ini, tetapi saya menyalahkan usianya (muda). Saya berharap down-vote saya akan diperhitungkan.
Anda dapat menggunakan %~dp0, d berarti drive saja, p berarti path saja, 0 adalah argumen untuk nama file lengkap dari file batch.
Sebagai contoh jika path file adalah C: \ Users \ Oliver \ Desktop \ example.bat maka argumennya akan sama dengan C: \ Users \ Oliver \ Desktop \, Anda juga dapat menggunakan perintah set cpath=%~dp0 && set cpath=%cpath:~0,-1%dan menggunakan %cpath%variabel untuk menghapus trailing slash.
%cd% akan memberi Anda jalur direktori tempat skrip dijalankan.
Lari saja:
echo %cd%
%CD%adalah folder yang aktif saat ini, bukan folder, tempat file batch disimpan. Mereka bisa menjadi lokasi yang sama, tetapi seringkali tidak.
Itu akan menjadi %CD%variabel.
@echo off
echo %CD%
%CD% mengembalikan direktori saat ini skrip batch.
CD C:\Temp <CR> ECHO %CD%( <CR>adalah baris baru ...)
Saya bekerja pada mesin Windows 7 dan saya akhirnya menggunakan baris di bawah ini untuk mendapatkan path folder absolut untuk skrip bash saya.
Saya mendapatkan solusi ini setelah melihat http://www.linuxjournal.com/content/bash-parameter-expansion .
#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder