มีคำสั่งบรรทัดคำสั่งของ Windows ที่ฉันสามารถใช้เพื่อรับเส้นทางแบบเต็มไปยังไดเรกทอรีการทำงานปัจจุบันหรือไม่
นอกจากนี้ฉันจะเก็บเส้นทางนี้ไว้ในตัวแปรที่ใช้ในไฟล์แบตช์ได้อย่างไร?
มีคำสั่งบรรทัดคำสั่งของ Windows ที่ฉันสามารถใช้เพื่อรับเส้นทางแบบเต็มไปยังไดเรกทอรีการทำงานปัจจุบันหรือไม่
นอกจากนี้ฉันจะเก็บเส้นทางนี้ไว้ในตัวแปรที่ใช้ในไฟล์แบตช์ได้อย่างไร?
คำตอบ:
ใช้cd
โดยไม่มีอาร์กิวเมนต์หากคุณใช้เชลล์โดยตรงหรือ%cd%
หากคุณต้องการใช้มันในไฟล์แบทช์ (มันจะทำงานเหมือนตัวแปรสภาพแวดล้อม)
คุณสามารถตั้งค่าตัวแปรชุด / สภาพแวดล้อมดังนี้:
SET var=%cd%
ECHO %var%
สกรีนช็อตตัวอย่างจาก Windows 7 x64 cmd.exe
อัปเดต:หากคุณทำSET var = %cd%
แทนSET var=%cd%
ด้านล่างจะเกิดอะไรขึ้น ขอบคุณ jeb
SET var = %cd%
ใส่ค่าในตัวแปรที่ไม่ได้เข้ามาvar<space>
var
คุณควรหลีกเลี่ยงช่องว่างในคำสั่ง SET
อ้างถึงวิธีใช้ Windows สำหรับset
คำสั่ง ( set /?
):
หากส่วนขยายคำสั่งถูกเปิดใช้งานแสดงว่ามีหลายไดนามิก ตัวแปรสภาพแวดล้อมที่สามารถขยายได้ แต่ไม่สามารถแสดงได้ รายการของตัวแปรที่แสดงโดย SET ค่าตัวแปรเหล่านี้คือ คำนวณแบบไดนามิกในแต่ละครั้งที่มีการขยายค่าของตัวแปร หากผู้ใช้กำหนดตัวแปรอย่างชัดเจนด้วยหนึ่งในชื่อเหล่านี้แล้ว นิยามนั้นจะแทนที่ไดนามิกที่อธิบายไว้ด้านล่าง: % CD% - ขยายไปยังสตริงไดเรกทอรีปัจจุบัน % DATE% - ขยายเป็นวันที่ปัจจุบันโดยใช้รูปแบบเดียวกับคำสั่ง DATE % TIME% - ขยายเป็นเวลาปัจจุบันโดยใช้รูปแบบเดียวกับคำสั่ง TIME % RANDOM% - ขยายเป็นเลขทศนิยมแบบสุ่มระหว่าง 0 ถึง 32767 % ERRORLEVEL% - ขยายเป็นค่า ERRORLEVEL ปัจจุบัน % CMDEXTVERSION% - ขยายเป็นส่วนขยายตัวประมวลผลคำสั่งปัจจุบัน หมายเลขรุ่น % CMDCMDLINE% - ขยายไปยังบรรทัดคำสั่งดั้งเดิมที่เรียกใช้ หน่วยประมวลผลคำสั่ง
หมายเหตุ%CD% - expands to the current directory string.
ส่วนหนึ่ง
บน Unix?
รหัสผ่าน
สำหรับ Windows เราสามารถใช้
cd
และสำหรับ Linux
pwd
คำสั่งอยู่ที่นั่น
สิ่งนี้ใช้ได้กับฉันเสมอ:
SET CurrentDir="%~dp0"
ECHO The current file path this bat file is executing in is the following:
ECHO %CurrentDir%
Pause
สำหรับ Windows cd
ด้วยตัวเองจะแสดงไดเรกทอรีทำงานปัจจุบัน
สำหรับ UNIX และระบบ workalike pwd
จะทำงานเดียวกัน คุณยังสามารถใช้$PWD
ตัวแปรเชลล์ภายใต้เชลล์บางตัวได้ ฉันไม่แน่ใจว่า Windows รองรับการรับไดเรกทอรีทำงานปัจจุบันผ่านตัวแปรเชลล์หรือไม่
%cd%
บน Windows:
CHDIR แสดงชื่อหรือเปลี่ยนไดเรกทอรีปัจจุบัน
ใน Linux:
PWD แสดงชื่อของไดเรกทอรีปัจจุบัน
ตามคำถามติดตาม (เก็บข้อมูลในตัวแปร) ในความคิดเห็นไปยังโพสต์ chdir ฉันเดิมพันเขาต้องการเก็บเส้นทางปัจจุบันเพื่อเรียกคืนหลังจากเปลี่ยนไดเรกทอรี
ผู้ใช้ดั้งเดิมควรดูที่ "pushd" ซึ่งเปลี่ยนไดเรกทอรีและผลักดันปัจจุบันไปยังสแต็กที่สามารถเรียกคืนได้ด้วย "popd" ใน cmd เชลล์ Windows รุ่นใหม่ที่เป็นวิธีในการสร้างไฟล์แบตช์
หากคุณต้องการคว้าเส้นทางปัจจุบันจริงๆแล้วเชลล์ cmd ที่ทันสมัยยังมีตัวแปร% CD% ที่คุณสามารถเก็บไว้ในตัวแปรอื่นเพื่อการอ้างอิงได้อย่างง่ายดาย
สร้าง.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
สามารถใช้ได้จากทุกที่
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%
แต่แน่นอนคำตอบของ gmaran23 เป็นคำตอบที่ง่ายกว่ามาก
tokens=*
แก้ไขว่า
ในพรอมต์คำสั่ง Windows chdir
หรือcd
จะพิมพ์เส้นทางแบบเต็มของไดเรกทอรีการทำงานปัจจุบันในคอนโซล
cd | clip
ถ้าเราต้องการที่จะคัดลอกเส้นทางแล้วเราสามารถใช้:
บน Windows ให้พิมพ์cd
เส้นทางการทำงานปัจจุบัน
บน Linux pwd
สำหรับเส้นทางการทำงานปัจจุบัน
เป็นหนึ่งในรหัสที่เป็นไปได้
echo off
for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
echo The current directory is: "%var:~1%"