มีคำสั่งบรรทัดคำสั่งของ 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%"