นำทางไปยังไดเรกทอรีก่อนหน้าในพรอมต์คำสั่ง windows


39

มีคำสั่ง / เครื่องมือใดนำทางไดเรกทอรีก่อนหน้าใน windows command prompt?

ใน linux มักจะใช้

cd -

สำหรับการนำทางไดเรกทอรีก่อนหน้า

คำตอบ:


27

บันทึกสิ่งต่อไปนี้เพื่อเช่น mycd.batบางแห่งในเส้นทางของคุณ:

@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
    cd /d %OLDPWD%
    set OLDPWD=%cd%
) else (
    cd /d %*
    if not errorlevel 1 set OLDPWD=%cd%
)

จากนั้นอย่าลืมใช้mycdแทนcdการเปลี่ยนไดเรกทอรีและไดรฟ์

หรือใช้doskeyมาโคร:

C:\>doskey cd=mycd $*

ข้อแม้เดียวคือถ้าคุณไม่ใช้ช่องว่างระหว่างcdและ..หรือ\คุณจะได้รับรุ่น builtin ของcdไม่doskeyแมโคร ... และคุณยังคงต้องจำไม่ใช้C:, D:ฯลฯ มีการเปลี่ยนแปลงไดรฟ์


ดูเหมือนว่ามันจะไม่ทำงาน แต่ก็เป็นเช่นนั้น OLDPWD ได้รับการตั้งค่าอย่างถูกต้อง
Hugh Allen

2
+1 นี่ดีใช้งานได้! แต่เจ็บปวดที่จะใช้ mycd (หรือ whtevr)
ukanth

@HughAllen สามารถสร้างแมโคร doskey สำหรับ cd \ and cd .. doskey cd \ = cd \ หรือ doskey cd \ = c: \ mycd.bat \ doskey C: = c: \ mycd.bat C:
barlop

ไม้ค้างคาวนั้นจะล้มเหลวสำหรับ c: \ blah.bat% USERPROFILE% (ดังนั้น cd หรือ cdd% USERPROFILE% จะล้มเหลว) หากต้องการแก้ไขให้เปลี่ยนเครื่องหมายคำพูดเดี่ยวเป็นเครื่องหมายคำพูดคู่
barlop

39

คุณสามารถใช้ pushd และ popd:

C: \ WINDOWS> pushd \
C: \> popd
C: \ WINDOWS>

ขอบคุณจอห์น แต่นี่ไม่ใช่สิ่งที่ฉันกำลังมองหา
ukanth

2
มันเป็นสิ่งที่ฉันต้องการสำหรับสคริปต์ชุดงานของฉันขอบคุณ มันยังเปลี่ยนไดรฟ์โดยไม่ต้องใช้สวิตช์ \ d
Deebster

2
คำเตือนด้วยpushd/popdคุณต้องนึกถึงความเป็นไปได้ของข้อผิดพลาด ในสคริปต์เมื่อคุณpushdมีไดเรกทอรีที่ไม่มีอยู่มันจะไม่เสร็จสิ้นในสแต็ก แต่เมื่อคุณpopdออกจากระดับหนึ่ง: ตัวแปรไม่ถูกต้องผิดพลาดผิดพลาดไดรฟ์ผิด ... คุณคิดว่าอยู่ในไดเรกทอรีที่แตกต่างกัน จากสิ่งที่คุณเป็นอยู่กับปัญหาร้ายแรงเช่นเมื่อคุณลบไฟล์ / dirs ภัยพิบัติ (ไวยากรณ์ Linux): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf * คุณเชื่อใน A แต่ ... สายเกินไปไดเรกทอรีบ้านทั้งหมดของคุณหายไป
Hastur

4

หากคุณกำลังเรียกใช้ไฟล์แบตช์คุณสามารถใช้

  cd /D  %~dp0

สิ่งนี้จะกระโดดกลับไปที่เส้นทางเดิมจากที่ไฟล์แบตช์ถูกเรียกใช้


4

ถ้าคุณต้องการพฤติกรรมที่แท้จริงของการทุบตีทำไมไม่ใช้ทุบตี? ฉันติดตั้งcygwinแล้วและมันเยี่ยมมาก มันไม่ได้ทำให้คุณยึดติดกับเครื่องมือ UNIX - มันจะเรียกหน้าต่างใด ๆ ที่ปฏิบัติการได้อย่างมีความสุข สำหรับcmd.exebuiltins คุณสามารถสร้างนามแฝงได้:

hugh@comp07 ~/testdir                             
$ alias cm='cmd /c'                               

hugh@comp07 ~/testdir                             
$ cm dir                                          
 Volume in drive C has no label.                  
 Volume Serial Number is AC2A-8378                

 Directory of C:\cygwin\home\hugh\testdir         

18/05/2010  02:02 PM    <DIR>          .          
18/05/2010  02:02 PM    <DIR>          ..         
               0 File(s)              0 bytes     
               2 Dir(s)   1,365,155,840 bytes free

hugh@comp07 ~/testdir                             
$ 

3

มีฟรีแวร์เป็นcmdโคลนที่มีคุณสมบัติพิเศษรวมทั้งการcd -เรียกใช้คำสั่งคอนโซล LE

ข้อความแสดงแทน


ไม่ทำงาน
2010

2
@TiNS: ตกลงฉันแค่ลองมันและมันก็ได้ผลสำหรับฉัน คุณทำอะไรลงไป
Hugh Allen

ฉันพยายามกับคอนโซล (จากหน้าต่างหลัก)
ukanth

1
@TiNS: ฉันไม่ชัดเจนในสิ่งที่คุณทำ แต่อาจจะเป็นภาพหน้าจอนี้จะช่วยได้อย่างไร (ตอบรับการอัปเดต)
Hugh Allen

1

คุณสามารถเริ่มเซสชั่น cmd ใหม่โดยทำ 'cmd' ย้ายไดเรกทอรีและทำทุกอย่างที่คุณต้องการเมื่อคุณออกจาก 'ออก' เพื่อออกจากเซสชั่นคุณจะกลับมาอยู่ในไดเรกทอรีที่คุณเคยทำเมื่อ คุณเริ่มเซสชันใหม่


1

คำตอบที่ยอมรับนั้นยอดเยี่ยมมากสำหรับความต้องการ ในขณะที่ฉันมักจะต้องสลับไปมาในหลาย ๆ ไดเรกทอรีล่าสุดแทนที่จะเป็นเพียงแค่สอง (ปัจจุบันและก่อนหน้า)

ดังนั้นเมื่อเร็ว ๆ นี้ฉันได้จัดทำแบทช์เพื่อให้งานประจำวันของฉันง่ายขึ้น https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec


พิมพ์ง่ายcdx :มาก ขอบคุณ! มันควรเป็นคำตอบ upvoted ด้านบน
AndreyWD

0

สิ่งที่ฉันทำคือ

rem capture the path of the initial dir
set RET_DIR=%CD%
rem do stuff...
rem and then return to the initial dir
cd %RET_DIR%
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.