Apakah mungkin untuk mendapatkan nama folder saat ini (bukan jalur direktori saat ini) dengan menggunakan perintah DOS? Jika ya, bagaimana caranya?
Yang paling dekat yang saya dapatkan adalah ini tetapi tidak melakukannya:
for /f "delims=\" %%a in ("%CD%") do set CURR=%%a
echo.DIR: %CURR%
catatan: upaya di atas adalah saya mencoba tokenize string dan mendapatkan set token terakhir sebagai variabel CURR.
windows
command-line
batch
Djangofan
sumber
sumber
cd | sed "s/.*\\//"
(Itu mem-pipe output dari cd (cwd) ke pencarian ekspresi reguler dan ganti, mengganti semuanya sebelum final \ dengan apa-apa sama sekali)for /f
TomWij%~n*
yang didukung dalam MS-DOS. (Windows'cmd.exe
adalah tidak DOS, itu program Windows asli.)Jawaban:
Cara terpendek yang saya temukan:
atau dalam skrip .bat:
atau di .bat dengan Dapatkan nilai dalam variabel.
Penjelasan: http://www.robvanderwoude.com/ntfor.php
nx berarti hanya nama file dan ekstensi
sumber
%
dengan%%
..
), seperti folder% USERPROFILE% saya.*
menggunakannya sebelum ooJika Anda ingin mengetahui lokasi file batch saat ini (dan jika Windows Anda bukan rilis yang sangat kuno), ketikkan
for /?
jendela 'kotak DOS'. Gulir ke bawah. Baca.Anda akan menemukan, bahwa Anda sekarang dapat membaca (dari dalam file batch) variabel-variabel ini:
Ini bekerja untuk banyak kasus. Asumsikan, kumpulan berkas disebut
mytest.bat
. Anda dapat menyebutnya dengan berbagai cara:..\..\to\mytest.bat
............................... (jalur relatif)d:\path\to\mytest.bat
........................... (jalur penuh)\\fileserver\sharename\mytest.bat
... (jalur berbagi jarak jauh)... dan Anda akan selalu mendapatkan nilai yang tepat dalam variabel Anda.
sumber
%~dpnx0
, bukan?Saya pribadi suka jawaban Toms, sampai ia berjuang dengan titik-titik dalam nama dir. Ini memberi saya petunjuk:
sumber
Jawaban Tom bagus, tetapi jika Anda memiliki nama direktori dengan tanda titik di dalamnya (mis. Wxwidgets-2.9.4) Anda hanya akan mendapatkan nama lengkap. Jadi ini akan menghasilkan wxwidgets-2.9 sebagai gantinya karena .4 telah diperlakukan sebagai ekstensi (Ya, meskipun itu adalah nama direktori!).
Untuk mendapatkan nama hasil lengkap, Anda harus menambahkan ekstensi sampai akhir:
dan dalam mode file batch:
Atau tentu saja, tetapkan variabel dalam file batch sebagai gantinya:
sumber
Cara lain adalah:
ini bekerja dengan "." dan spasi di pathname
Apa fungsinya?
letakkan seluruh nama file (driveletter-path-filename-extension) ke dalam
MyPath
Varhapus nama file dan ekstensi dari
MyPath
varIni juga bekerja dengan UNC Paths. Jika Anda memerlukan Backslash di ujung Path. Hapus
\
setelahMyPath
dalam perintah set kedua, mis.sumber
%~dp0
Anda bisa mendapatkan dir saat ini menjadi variabel. Satu-liner:
Periksa dengan
sumber
sederhana saja
atau
Hati-hati dengan backslash di ujung jalan, itu tidak harus backslash di ujung.
sumber
Jawaban saya di utas ini melakukannya dalam 3 baris sederhana:
sumber
Ini bekerja untuk saya dari file batch. Ini mengembalikan nama direktori kerja saat ini.
sumber