2011-07-22 32 views
31

Làm cách nào để đặt biến với vị trí hiện tại? như nếu tôi nhận được trong c: \ kiểm tra và thiết lập các biến nó sẽ được thử nghiệm .. và nếu tôi nhận được bên trong c: \ test \ test2 biến sẽ được test2? ...tập lệnh theo lô để đặt biến với vị trí đường dẫn hiện tại

Tôi đang nghĩ về cách sử dụng để vào bên trong nhiều thư mục và kiểm tra xem một số tệp có tồn tại không, nếu tệp đúng tồn tại tôi muốn đặt thư mục hiện tại thành biến để tôi có thể sao chép đường dẫn và sao chép thư mục này ...

Ok vậy Vấn đề chính là sao chép phần còn lại của các tệp trên cùng thư mục với .inf ... vui lòng trợ giúp!

Thnak bạn rất nhiều

Trả lời

52

Thư mục hiện tại nằm trong biến "bóng tối" cd.
Bạn có thể thử

set "var=%cd%" 
+0

Cảm ơn bạn, nó đã hoạt động !! Mặc dù Làm thế nào để tôi làm một cho rằng có được bên trong thư mục và thư mục con và mọi cấp độ ông thêm một biến vào% cd% .. vì vậy mỗi thư mục được trong biến sẽ là con đường hiện tại .. – massaki

10
%~dp0 

này mở rộng vào con đường ổ & của tập tin batch hiện đang chạy. Tôi thường bao quanh các tập tin batch của tôi với một cái gì đó như:

@echo off 
pushd %~dp0 

... 

popd 

Sửa: Có vẻ như tôi không hiểu OP. Ví dụ của tôi lấy vị trí của tập lệnh hiện đang chạy, không phải là "Thư mục hiện tại". +1 đến jeb.

+0

% ~ dp0 có thể là hiện tại vị trí, nhưng chỉ khi tệp bó nằm trong thư mục hiện tại. Nhưng câu trả lời của bạn là hữu ích, vì đây thường là yêu cầu – jeb

+0

xin lỗi, tôi cố gắng gõ echo %% ~ dp0 tại cmd và tôi nhận% ~ dp0 ... – massaki

+1

@massaki: nó không hoạt động từ dấu nhắc lệnh; nó chỉ hoạt động trong các tập tin batch. '% dp0' là ổ đĩa & đường dẫn của đối số 0 'cho tệp lô, là đường dẫn đầy đủ của tệp lô. – tenfour

2

Tôi nghĩ có một chút hoang mang ở đây. % CD% luôn có thư mục hiện tại, vì vậy bạn không cần thêm bất cứ thứ gì để có nó. Tuy nhiên, bằng cách đọc lại câu hỏi ban đầu của bạn, tôi nghĩ rằng bạn cần PHẦN CUỐI CÙNG của thư mục hiện tại, nghĩa là tên của vị trí hiện tại không bao gồm tất cả các vị trí trước đó. Nếu vậy, bạn có thể sử dụng điều này:

set i=0 
:nextdir 
set /a i+=1 
for /f "tokens=%i% delims=\" %%a in ("%CD%") do if not "%%a" == "" set lastdir=%%a& goto nextdir 
echo Current location: %lastdir% 
+0

Tôi nhận thấy điều này là khá cũ, nhưng chỉ muốn cho bạn biết lỗi này với: delims = \ "là bất ngờ tại thời điểm này. –

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