2009-06-10 32 views
15

Vật lộn với dòng lệnh một lần nữa, tôi đã tìm ra rằng tôi có thể lưu trữ các thư mục làm việc hiện tại trong một biến như sau:Làm thế nào để thiết lập một biến cho đường dẫn của thư mục mẹ trên cửa sổ?

SET current=%cd% 

Làm thế nào tôi có thể đặt phụ huynh mặc dù? SET parent=%..% không hoạt động, vì nó vang %..%

Về cơ bản, gọi một kịch lô C:\a\b\myscript.bat với các nội dung sau:

@echo off 
set current=%cd% 
echo %current% 

in C:\a\b và tôi nên muốn thiết một biến parent để nó sẽ in C:\a mà không thay đổi thư mục làm việc hiện tại thành ..

Điều này có khả thi không?

Trả lời

33

Move lên một thư mục, nhớ dòng điện, thiết lập các phụ huynh, và sau đó bật xuống một thư mục, trở lại nơi mà bạn bắt đầu

@echo off 
set current=%cd% 
pushd .. 
set parent=%cd% 
popd 

echo current %current% 
echo parent %parent% 
+0

Hoàn hảo! Bây giờ tôi nhớ nhìn thấy pushd và popd ở đâu đó nhưng nó hoàn toàn trượt tâm trí của tôi. Cảm ơn bạn đã giúp đỡ. –

+0

Bạn là người bạn đời thân thiết :) –

2

Sử dụng

pushd targetFolder 
set current=%cd% 
popd 

pushd/popd duy trì một chồng các thư mục đã truy cập trước đó.

+0

cảm ơn bạn cũng vì sự giúp đỡ của bạn –

8

Bạn cũng có thể làm một cái gì đó như thế này:

 
set current=%CD% 
set parent=%CD%\.. 

Nó không cung cấp cho bạn tên kinh điển của cha mẹ, nhưng nó phải luôn luôn là một đường dẫn hợp lệ để thư mục mẹ. Nó cũng sẽ nhanh hơn một chút so với các giải pháp liên quan đến pushd và popd, nhưng điều đó sẽ không được xem xét chính trong một tập tin thực thi.

Chỉnh sửa: Lưu ý rằng tất cả các giải pháp cho đến nay, kể cả của tôi ở đây, sẽ gặp sự cố nếu thư mục hiện tại là gốc của ổ đĩa. Không có cách nào sạch sẽ và dễ dàng ra khỏi đó, vì thực sự không có cha mẹ của một ổ đĩa có thể nhìn thấy chế độ người dùng.

+1

Đó là một cách khác để xem xét nó. Đối với chỉnh sửa của bạn, cả hai cách dường như không có vấn đề với 'hiện tại' là gốc của ổ đĩa. C: \ cd .. sẽ không đưa bạn lên một cấp độ cao hơn nhưng vẫn ở C: \ mà không cần phanh, và về mặt kỹ thuật C: \ là cha mẹ của C: \ vì vậy đó là mát mẻ. Sẽ không sử dụng điều này từ gốc anyway;) –

+0

Nó chỉ là một nguồn của một gián đoạn, hoặc một vòng lặp mà không dừng lại, vì vậy tôi nghĩ rằng nó đáng nói đến. – RBerteig

+0

Một giải pháp đơn giản khác, tuyệt vời! –

Các vấn đề liên quan