คำสั่งเชลล์ของ Windows เพื่อรับเส้นทางแบบเต็มไปยังไดเรกทอรีปัจจุบันหรือไม่


223

มีคำสั่งบรรทัดคำสั่งของ Windows ที่ฉันสามารถใช้เพื่อรับเส้นทางแบบเต็มไปยังไดเรกทอรีการทำงานปัจจุบันหรือไม่

นอกจากนี้ฉันจะเก็บเส้นทางนี้ไว้ในตัวแปรที่ใช้ในไฟล์แบตช์ได้อย่างไร?


find / dir / to / start / from -type f -ls จัดรูปแบบวันที่เป็นตัวเลข find / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% e% H:% M "{} \;

ลองดูที่คำตอบนี้stackoverflow.com/a/52301748/2704032
Vishrant

คำตอบ:


356

ใช้cdโดยไม่มีอาร์กิวเมนต์หากคุณใช้เชลล์โดยตรงหรือ%cd%หากคุณต้องการใช้มันในไฟล์แบทช์ (มันจะทำงานเหมือนตัวแปรสภาพแวดล้อม)


11
ไม่วิธีคุณเข้าใจสิ่งที่เขาพยายามจะบอกว่าจากที่ ? และภายใต้ dos และ windows cmd โดยปกติจะเป็นเพียงแค่ "cd"
Rook

10
สุจริตฉันไม่สามารถคิดสิ่งอื่นที่พวกเขาอาจพยายามถามตามคำถามที่ระบุไว้
เทรเวอร์ Bramble

1
ฉันสามารถเก็บพา ธ นี้ไว้ในตัวแปรในไฟล์. bat ได้หรือไม่?
user62958

@unknown - คุณอาจจะดีขึ้นด้วยการอธิบายปัญหาเริ่มแรก
โกง

100

คุณสามารถตั้งค่าตัวแปรชุด / สภาพแวดล้อมดังนี้:

SET var=%cd%
ECHO %var%

สกรีนช็อตตัวอย่างจาก Windows 7 x64 cmd.exe

ป้อนคำอธิบายรูปภาพที่นี่

อัปเดต:หากคุณทำSET var = %cd%แทนSET var=%cd%ด้านล่างจะเกิดอะไรขึ้น ขอบคุณ jeb

ป้อนคำอธิบายรูปภาพที่นี่

การจับภาพไดเรกทอรีปัจจุบันจากแบตช์ไฟล์


2
ตามคำถามคำตอบนี้ควรเป็นคำตอบที่ยอมรับได้จริง
René Nyffenegger

7
แต่ก็ไม่ได้ทำงานเป็นSET var = %cd%ใส่ค่าในตัวแปรที่ไม่ได้เข้ามาvar<space> varคุณควรหลีกเลี่ยงช่องว่างในคำสั่ง SET
jeb

1
ตามคำถามคำตอบนี้ควรเป็นคำตอบที่ยอมรับได้จริง
shridutt kothari

51

อ้างถึงวิธีใช้ Windows สำหรับsetคำสั่ง ( set /?):

หากส่วนขยายคำสั่งถูกเปิดใช้งานแสดงว่ามีหลายไดนามิก
ตัวแปรสภาพแวดล้อมที่สามารถขยายได้ แต่ไม่สามารถแสดงได้
รายการของตัวแปรที่แสดงโดย SET ค่าตัวแปรเหล่านี้คือ
คำนวณแบบไดนามิกในแต่ละครั้งที่มีการขยายค่าของตัวแปร
หากผู้ใช้กำหนดตัวแปรอย่างชัดเจนด้วยหนึ่งในชื่อเหล่านี้แล้ว
นิยามนั้นจะแทนที่ไดนามิกที่อธิบายไว้ด้านล่าง:

% CD% - ขยายไปยังสตริงไดเรกทอรีปัจจุบัน

% DATE% - ขยายเป็นวันที่ปัจจุบันโดยใช้รูปแบบเดียวกับคำสั่ง DATE

% TIME% - ขยายเป็นเวลาปัจจุบันโดยใช้รูปแบบเดียวกับคำสั่ง TIME

% RANDOM% - ขยายเป็นเลขทศนิยมแบบสุ่มระหว่าง 0 ถึง 32767

% ERRORLEVEL% - ขยายเป็นค่า ERRORLEVEL ปัจจุบัน

% CMDEXTVERSION% - ขยายเป็นส่วนขยายตัวประมวลผลคำสั่งปัจจุบัน
    หมายเลขรุ่น

% CMDCMDLINE% - ขยายไปยังบรรทัดคำสั่งดั้งเดิมที่เรียกใช้
    หน่วยประมวลผลคำสั่ง

หมายเหตุ%CD% - expands to the current directory string.ส่วนหนึ่ง


26

บน Unix?

รหัสผ่าน


2
OP ได้รับคำขอจากเดิมว่า "คำสั่ง" และไม่ได้ระบุระบบปฏิบัติการ ระบบปฏิบัติการได้รับการระบุแล้วดังนั้นคำตอบนี้จึงไม่เกี่ยวข้องอีกต่อไป
Tisch

18

สำหรับ Windows เราสามารถใช้

cd

และสำหรับ Linux

pwd

คำสั่งอยู่ที่นั่น


17

สิ่งนี้ใช้ได้กับฉันเสมอ:

SET CurrentDir="%~dp0"

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

ECHO %CurrentDir%

Pause

2
นั่นเป็นสิ่งที่ผิด - ค้นหาเส้นทางของสคริปต์ชุดงานไม่ใช่ไดเรกทอรีปัจจุบัน
Harry Johnston

2
โหวตขึ้นเนื่องจากการตอบคำถามของ OP ... และให้ทางออกที่ถูกต้องแก่ฉัน ขอบคุณ!
A-Diddy

รับได้สวย. ไดเรกทอรีปัจจุบันสามารถอ้างถึงคำสั่งที่เรียกใช้ไฟล์แทนตำแหน่งของไฟล์เอง
Tam Le

9

สำหรับ Windows cdด้วยตัวเองจะแสดงไดเรกทอรีทำงานปัจจุบัน

สำหรับ UNIX และระบบ workalike pwdจะทำงานเดียวกัน คุณยังสามารถใช้$PWDตัวแปรเชลล์ภายใต้เชลล์บางตัวได้ ฉันไม่แน่ใจว่า Windows รองรับการรับไดเรกทอรีทำงานปัจจุบันผ่านตัวแปรเชลล์หรือไม่


อย่างไรก็ตามฉันไม่สามารถเข้าใจว่าทำไมเขาต้องการ "cd" เพื่อดู dir ปัจจุบันของเขา โดยค่าเริ่มต้นจะปรากฏเป็นวัน และถ้าเขาเปลี่ยนมันมากกว่าที่เขารู้อย่างแน่นอนว่า "cd" ทำอะไร
โกง

เก่ามาก แต่เพื่อความสมบูรณ์: ใช่ windows มี varible สำหรับสิ่งนี้ มันชื่อ (เดา ... )%cd%
เตฟาน

8

บน Windows:

CHDIR แสดงชื่อหรือเปลี่ยนไดเรกทอรีปัจจุบัน

ใน Linux:

PWD แสดงชื่อของไดเรกทอรีปัจจุบัน


5

ตามคำถามติดตาม (เก็บข้อมูลในตัวแปร) ในความคิดเห็นไปยังโพสต์ chdir ฉันเดิมพันเขาต้องการเก็บเส้นทางปัจจุบันเพื่อเรียกคืนหลังจากเปลี่ยนไดเรกทอรี

ผู้ใช้ดั้งเดิมควรดูที่ "pushd" ซึ่งเปลี่ยนไดเรกทอรีและผลักดันปัจจุบันไปยังสแต็กที่สามารถเรียกคืนได้ด้วย "popd" ใน cmd เชลล์ Windows รุ่นใหม่ที่เป็นวิธีในการสร้างไฟล์แบตช์

หากคุณต้องการคว้าเส้นทางปัจจุบันจริงๆแล้วเชลล์ cmd ที่ทันสมัยยังมีตัวแปร% CD% ที่คุณสามารถเก็บไว้ในตัวแปรอื่นเพื่อการอ้างอิงได้อย่างง่ายดาย


5

สร้าง.batไฟล์ภายใต้System32ให้เราตั้งชื่อcopypath.batคำสั่งเพื่อคัดลอกเส้นทางปัจจุบันอาจเป็น :

echo %cd% | clip

คำอธิบาย:

%cd%จะให้เส้นทางปัจจุบันแก่คุณ

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.

ตอนนี้copyclipสามารถใช้ได้จากทุกที่


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

แต่แน่นอนคำตอบของ gmaran23 เป็นคำตอบที่ง่ายกว่ามาก


คำตอบของเขาดีขึ้นตามคำนิยามเพราะคำตอบของคุณผิด มันไม่ทำงานสำหรับเส้นทางที่มีช่องว่าง
Garric

การเพิ่มการtokens=*แก้ไขว่า
René Nyffenegger

2

ในพรอมต์คำสั่ง Windows chdirหรือcdจะพิมพ์เส้นทางแบบเต็มของไดเรกทอรีการทำงานปัจจุบันในคอนโซล

cd | clipถ้าเราต้องการที่จะคัดลอกเส้นทางแล้วเราสามารถใช้:


0

บน Windows ให้พิมพ์cdเส้นทางการทำงานปัจจุบัน

บน Linux pwdสำหรับเส้นทางการทำงานปัจจุบัน


5
มีคำตอบ 10 ข้อสำหรับโซลูชันเดียวกัน แต่มีคำอธิบายเพิ่มเติม
jeb

0

เป็นหนึ่งในรหัสที่เป็นไปได้

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.