Saya tahu itu %0
berisi path lengkap skrip batch, misc:\path\to\my\file\abc.bat
Saya akan path
sama denganc:\path\to\my\file
Bagaimana saya bisa mencapainya?
Saya tahu itu %0
berisi path lengkap skrip batch, misc:\path\to\my\file\abc.bat
Saya akan path
sama denganc:\path\to\my\file
Bagaimana saya bisa mencapainya?
Jawaban:
%~dp0
akan menjadi direktori. Berikut ini beberapa dokumentasi pada semua pengubah jalur . Hal menyenangkan :-)
Untuk menghapus garis miring terbalik terakhir, Anda dapat menggunakan :n,m
sintaksis substrat, seperti:
SET mypath=%~dp0
echo %mypath:~0,-1%
Sayangnya, saya tidak percaya ada cara untuk menggabungkan %0
sintaksis dengan :~n,m
sintaksis.
%~0\..
- tahu harus ada cara yang lebih baik! Juga, Anda mungkin ingin menyertakan %~dp0
tanda kutip ganda ( ""
) jika ada spasi dalam nama direktori, dll.
%~dp0
berisi `` di bagian akhir. Apakah Anda punya ide cara menghapusnya?
SET msg=hello world
berfungsi dengan baik). Namun, ketika menggunakan% mypath% di tempat lain Anda ingin berhati-hati menggunakannya dalam tanda kutip, meskipun mereka tidak diperlukan cd
juga.
Anda dapat menggunakan skrip berikut untuk mendapatkan lintasan tanpa mengeklik "\"
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
mungkin jalur relatif. Untuk mengonversinya menjadi jalur lengkap, coba sesuatu seperti ini:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
secara langsung?
%~dp0
dapat bersifat relatif, yang mungkin atau mungkin tidak menjadi masalah tergantung pada kasus penggunaan
%~dp0
tidak dapat berisi path relatif, d
singkatan drive dan p
path, bagaimana drive bisa relatif?
%~dp0
akan 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