Windows shell lệnh để có được đường dẫn đầy đủ đến thư mục hiện tại?


223

Có một dòng lệnh Windows mà tôi có thể sử dụng để có được đường dẫn đầy đủ đến thư mục làm việc hiện tại không?

Ngoài ra, làm cách nào tôi có thể lưu trữ đường dẫn này bên trong một biến được sử dụng trong tệp bó?


find / dir / to / start / from -type f -ls Định dạng này ngày thành số find / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% e% H:% M "{} \;

hãy xem câu trả lời này stackoverflow.com/a/52301748/2704032
Vishrant

Câu trả lời:


356

Sử dụng cdkhông có đối số nếu bạn đang sử dụng shell trực tiếp hoặc %cd%nếu bạn muốn sử dụng nó trong một tệp bó (nó hoạt động như một biến môi trường).


11
Làm thế nào bạn hiểu những gì anh ấy đã cố gắng nói từ đó ? Và, dưới dos và windows cmd, nó thường chỉ là "cd"
Rook

10
Thành thật mà nói, tôi không thể nghĩ bất cứ điều gì khác mà họ có thể đang cố gắng hỏi như câu hỏi đã nêu.
Trevor Bramble

1
Tôi có thể lưu trữ đường dẫn này bên trong một biến trong tệp .bat không?
user62958

@unknown - bạn có thể tốt hơn bằng cách mô tả vấn đề ban đầu ở nơi đầu tiên.
Rook

100

Bạn có thể đặt biến lô / môi trường như sau:

SET var=%cd%
ECHO %var%

ảnh chụp màn hình mẫu từ Windows 7 x64 cmd.exe.

nhập mô tả hình ảnh ở đây

Cập nhật: nếu bạn làmSET var = %cd%thay vìSET var=%cd%, dưới đây là những gì xảy ra. Cảm ơn jeb.

nhập mô tả hình ảnh ở đây

Chụp thư mục hiện tại từ một tệp bó


2
Theo câu hỏi, câu trả lời này thực sự nên được chấp nhận.
René Nyffalanger

7
Nhưng nó không hoạt động, như SET var = %cd%đặt giá trị trong biến var<space>không vào var. Bạn nên tránh các khoảng trắng trong lệnh SET
jeb

1
Theo câu hỏi, câu trả lời này thực sự nên được chấp nhận.
shridutt kothari

51

Trích dẫn trợ giúp Windows cho setlệnh ( set /?):

Nếu tiện ích mở rộng lệnh được bật, thì có một số động
các biến môi trường có thể được mở rộng nhưng không xuất hiện trong
danh sách các biến được hiển thị bởi SET. Các giá trị biến này là
được tính toán linh hoạt mỗi lần giá trị của biến được mở rộng.
Nếu người dùng định nghĩa rõ ràng một biến với một trong những tên này, thì
định nghĩa đó sẽ ghi đè lên động được mô tả dưới đây:

% CD% - mở rộng sang chuỗi thư mục hiện tại.

% DATE% - mở rộng đến ngày hiện tại bằng cách sử dụng cùng định dạng với lệnh DATE.

% TIME% - mở rộng đến thời điểm hiện tại bằng cách sử dụng cùng định dạng với lệnh TIME.

% RANDOM% - mở rộng thành số thập phân ngẫu nhiên trong khoảng từ 0 đến 32767.

% ERRORLEVEL% - mở rộng đến giá trị ERRORLEVEL hiện tại

% CMDEXTVERSION% - mở rộng sang Tiện ích mở rộng Bộ xử lý lệnh hiện tại
    số phiên bản.

% CMDCMDLINE% - mở rộng đến dòng lệnh ban đầu đã gọi
    Bộ xử lý lệnh.

Lưu ý %CD% - expands to the current directory string.một phần.


26

Trên Unix?

pwd


2
OP ban đầu yêu cầu một "lệnh" và không chỉ định HĐH. Hệ điều hành hiện đã được chỉ định để câu trả lời này không còn phù hợp.
Tisch

18

Đối với Windows, chúng ta có thể sử dụng

cd

và cho Linux

pwd

lệnh là có.


17

Điều này đã luôn luôn làm việc cho tôi:

SET CurrentDir="%~dp0"

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

ECHO %CurrentDir%

Pause

2
Điều đó không đúng - tìm đường dẫn của tập lệnh bó, không phải thư mục hiện tại.
Harry Johnston

2
Được nâng cấp do trả lời câu hỏi của OP ... và đưa cho tôi giải pháp chính xác mà tôi đang tìm kiếm. Cảm ơn!
A-Diddy

Bắt đẹp. Thư mục hiện tại có thể đề cập đến lệnh gọi tệp thay vì vị trí của tệp.
Tam Lê

9

Đối với Windows, cdchính nó sẽ hiển thị cho bạn thư mục làm việc hiện tại.

Đối với các hệ thống UNIX và workalike, pwdsẽ thực hiện cùng một nhiệm vụ. Bạn cũng có thể sử dụng $PWDbiến shell dưới một số shell. Tôi không chắc chắn nếu Windows hỗ trợ nhận thư mục làm việc hiện tại thông qua một biến shell hay không.


Tuy nhiên tôi không thể hiểu tại sao anh ta cần "cd" để xem thư mục hiện tại của mình. Theo mặc định, nó được hiển thị như ngày. Và nếu anh ấy thay đổi nó, anh ấy chắc chắn biết "cd" làm gì.
Rook

rất cũ, nhưng chỉ để hoàn thiện: có, các cửa sổ có một biến cho điều này. Nó được đặt tên (đoán ...)%cd%
Stephan

8

Trên Windows:

CHDIR Hiển thị tên hoặc thay đổi thư mục hiện tại.

Trong Linux:

PWD Hiển thị tên của thư mục hiện tại.


5

Dựa trên câu hỏi tiếp theo (lưu trữ dữ liệu trong một biến) trong các bình luận cho bài đăng chdir Tôi cá cược anh ấy muốn lưu trữ đường dẫn hiện tại để khôi phục dữ liệu đó sau khi thay đổi thư mục.

Người dùng ban đầu nên xem "Pushd", thay đổi thư mục và đẩy cái hiện tại lên một ngăn xếp có thể được khôi phục bằng "popd". Trên bất kỳ shell cmd Windows hiện đại nào là cách để thực hiện khi tạo các tệp bó.

Nếu bạn thực sự cần phải lấy đường dẫn hiện tại thì các vỏ cmd hiện đại cũng có biến% CD% mà bạn có thể dễ dàng bỏ đi trong một biến khác để tham khảo.


5

Tạo một .battệp bên dưới System32, chúng ta hãy đặt tên cho nó copypath.batlà lệnh sao chép đường dẫn hiện tại có thể là :

echo %cd% | clip

Giải thích:

%cd% sẽ cung cấp cho bạn đường dẫn hiện tại

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.

Bây giờ copyclipcó sẵn từ khắp mọi nơi.


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

Nhưng, tất nhiên , câu trả lời của gmaran23 là dễ dàng hơn nhiều.


Câu trả lời của anh ấy tốt hơn theo định nghĩa vì câu trả lời của bạn là sai. Nó không hoạt động cho các đường dẫn với không gian.
Garric

Thêm tokens=*sửa chữa đó.
René Nyffalanger

2

Trong dấu nhắc lệnh của Windows, chdirhoặc cdsẽ in đường dẫn đầy đủ của thư mục làm việc hiện tại trong bàn điều khiển.

Nếu chúng ta muốn sao chép đường dẫn thì chúng ta có thể sử dụng : cd | clip.


0

Trên Windows, gõ cdcho đường dẫn hiện tại làm việc.

Trên Linux, pwdcho con đường làm việc hiện tại.


5
Đã có 10 câu trả lời với cùng một giải pháp, nhưng có nhiều lời giải thích hơn
jeb

0

Là một trong những mã có thể

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.