Perintah shell Windows untuk mendapatkan path lengkap ke direktori saat ini?

223

Apakah ada perintah baris perintah Windows yang bisa saya gunakan untuk mendapatkan path lengkap ke direktori kerja saat ini?

Juga, bagaimana saya bisa menyimpan jalur ini di dalam variabel yang digunakan dalam file batch?

pengguna62958
sumber
find / dir / to / start / from -type f -ls Format ini tanggal untuk numeric find / dir / to / start / from -type f -exec ls -l --waktu-style = "+% Y% m% e% H:% M "{} \;
lihat jawaban ini stackoverflow.com/a/52301748/2704032
Vishrant

Jawaban:

356

Gunakan cdtanpa argumen jika Anda menggunakan shell secara langsung, atau %cd%jika Anda ingin menggunakannya dalam file batch (berperilaku seperti variabel lingkungan).

Trevor Bramble
sumber
11
Bagaimana Anda mengerti apa yang dia katakan dari itu ? Dan, di bawah dos dan windows cmd, biasanya hanya "cd"
Rook
10
Jujur, saya tidak bisa memikirkan hal lain yang mungkin mereka coba tanyakan seperti yang dinyatakan pertanyaan.
Trevor Bramble
1
Bisakah saya menyimpan jalur ini di dalam variabel dalam file .bat?
user62958
@unknown - Anda mungkin lebih baik dengan menggambarkan masalah asli di tempat pertama.
Benteng
100

Anda dapat mengatur variabel batch / lingkungan sebagai berikut:

SET var=%cd%
ECHO %var%

contoh tangkapan layar dari Windows 7 x64 cmd.exe.

masukkan deskripsi gambar di sini

Perbarui: jika Anda melakukanSET var = %cd%alih-alihSET var=%cd%, di bawah ini yang terjadi. Terima kasih untuk jeb.

masukkan deskripsi gambar di sini

Mengambil direktori saat ini dari file batch

gmaran23
sumber
2
Menurut pertanyaan, jawaban ini seharusnya benar-benar diterima.
René Nyffenegger
7
Tetapi itu tidak berhasil, karena SET var = %cd%menempatkan nilai dalam variabel var<space>tidak menjadi var. Anda harus menghindari spasi dalam perintah SET
jeb
1
Menurut pertanyaan, jawaban ini seharusnya benar-benar diterima.
shridutt kothari
51

Mengutip bantuan Windows untuk setperintah ( set /?):

Jika Ekstensi Perintah diaktifkan, maka ada beberapa dinamis
variabel lingkungan yang dapat diperluas tetapi tidak muncul di
daftar variabel yang ditampilkan oleh SET. Nilai variabel ini adalah
dihitung secara dinamis setiap kali nilai variabel diperluas.
Jika pengguna secara eksplisit mendefinisikan variabel dengan salah satu dari nama-nama ini, maka
definisi itu akan menggantikan definisi dinamis yang dijelaskan di bawah ini:

% CD% - memperluas ke string direktori saat ini.

% DATE% - memperluas ke tanggal saat ini menggunakan format yang sama dengan perintah DATE.

% TIME% - meluas ke waktu saat ini menggunakan format yang sama dengan perintah TIME.

% RANDOM% - meluas ke angka desimal acak antara 0 dan 32767.

% ERRORLEVEL% - memperluas ke nilai ERRORLEVEL saat ini

% CMDEXTVERSION% - memperluas ke Ekstensi Prosesor Perintah saat ini
    nomor versi.

% CMDCMDLINE% - memperluas ke baris perintah asli yang dipanggil
    Pengolah Perintah.

Catat %CD% - expands to the current directory string.bagiannya.

Patrick Cuff
sumber
26

Di Unix?

pwd

Stephen Curial
sumber
2
OP awalnya meminta "perintah" dan tidak menentukan OS. OS sekarang telah ditentukan sehingga jawaban ini tidak lagi relevan.
Tisch
18

Untuk Windows bisa kita gunakan

cd

dan untuk Linux

pwd

perintah ada di sana.

Nikunj K.
sumber
17

Ini selalu berhasil untuk saya:

SET CurrentDir="%~dp0"

ECHO The current file path this bat file is executing in is the following:

ECHO %CurrentDir%

Pause
Fred Scales
sumber
2
Itu melakukan hal yang salah - menemukan jalan skrip batch, bukan direktori saat ini.
Harry Johnston
2
Terpilih karena menjawab pertanyaan OP ... dan memberi saya solusi tepat yang saya cari. Terima kasih!
A-Diddy
Tangkapan bagus. Direktori saat ini dapat merujuk ke perintah yang memanggil file alih-alih lokasi file itu sendiri.
Tam Le
9

Untuk Windows, cddengan sendirinya akan menampilkan direktori kerja saat ini.

Untuk sistem UNIX dan workalike, pwdakan melakukan tugas yang sama. Anda juga dapat menggunakan $PWDvariabel shell di bawah beberapa shell. Saya tidak yakin apakah Windows mendukung mendapatkan direktori kerja saat ini melalui variabel shell atau tidak.

Michael Trausch
sumber
Namun saya tidak bisa mengerti mengapa dia perlu "cd" untuk melihat dir-nya saat ini. Secara default, ini terlihat sebagai hari. Dan jika dia mengubahnya, maka dia pasti tahu apa yang "cd" lakukan.
Rook
sangat tua, tetapi hanya untuk kelengkapan: ya, windows memang memiliki variabel untuk ini. Namanya (tebak ...)%cd%
Stephan
8

Di Windows:

CHDIR Menampilkan nama atau mengubah direktori saat ini.

Di Linux:

PWD Menampilkan nama direktori saat ini.

Ajay Jayavarapu
sumber
5

Berdasarkan pertanyaan tindak lanjut (simpan data dalam variabel) di komentar ke posting chdir, saya bertaruh dia ingin menyimpan jalur saat ini untuk memulihkannya setelah mengubah direktori.

Pengguna asli harus melihat "pushd", yang mengubah direktori dan mendorong yang sekarang ke tumpukan yang dapat dikembalikan dengan "popd". Pada shell cmd Windows modern apa pun yang harus dilakukan ketika membuat file batch.

Jika Anda benar-benar perlu mengambil lintasan saat ini maka cangkang cmd modern juga memiliki variabel% CD% yang Anda dapat dengan mudah memasukkan dalam variabel lain untuk referensi.

Menandai
sumber
5

Buat .batfile di bawah System32, beri kami nama itu copypath.batperintah untuk menyalin jalur saat ini bisa :

echo %cd% | clip

Penjelasan:

%cd% akan memberi Anda jalur saat ini

CLIP

Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.

Parameter List:
    /?                  Displays this help message.

Examples:
    DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.

    CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

Sekarang copycliptersedia dari mana saja.

Vishrant
sumber
3
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%

Tapi, tentu saja , jawaban gmaran23 adalah yang jauh lebih mudah.

René Nyffenegger
sumber
Jawabannya lebih baik menurut definisi karena jawaban Anda salah. Itu tidak berfungsi untuk jalur dengan spasi.
Garric
Menambahkan tokens=*perbaikan itu.
René Nyffenegger
2

Di prompt perintah Windows, chdiratau cdakan mencetak path lengkap direktori kerja saat ini di konsol.

Jika kita ingin menyalin jalan maka kita dapat menggunakan: cd | clip.

Samrat Debroy
sumber
0

Di Windows, ketikkan cduntuk jalur saat ini yang berfungsi.

Di Linux, pwduntuk jalur kerja saat ini.

Shafeer khan
sumber
5
Sudah ada 10 jawaban dengan solusi yang sama, tetapi lebih banyak penjelasan
jeb
0

Sebagai salah satu kode yang mungkin

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
Garric
sumber