2011-07-22 71 views
31

如何設置與當前位置的變量?就像如果我進入c:\ test並設置它將被測試的變量..並且如果我進入c:\ test \ test2裏面,變量將會是test2? ...批處理腳本設置一個變量與當前路徑位置

我真的想用的人,讓很多文件夾內,並檢查是否某些文件存在,如果正確的文件存在,我想將當前文件夾設置爲變量,所以我可以複製路徑並複製該文件夾...

好了,所以主要問題是將文件的拷貝剩下的同一文件夾中的.inf ......請幫助!

非常感謝

回答

52

當前目錄位於「影子」變量cd中。
你可以嘗試

set "var=%cd%" 
+0

謝謝,它的工作!雖然我如何做到這一點,得到裏面的文件夾和子文件夾和每個級別,他添加一個變量%cd%..因此每個文件夾獲取變量將當前路徑.. – massaki

10
%~dp0 

這擴展到當前正在運行的批處理文件的驅動器&路徑。我通常環繞我的批處理文件的東西,如:

@echo off 
pushd %~dp0 

... 

popd 

編輯:看來我不明白的OP。我的例子獲取當前正在運行的腳本的位置,而不是「當前目錄」。 +1給jeb。

+0

%〜dp0可以是當前位置,但僅限於批處理文件位於當前目錄中。但你的答案是有幫助的,因爲這往往是要求 – jeb

+0

對不起,我嘗試在cmd鍵入回聲%%〜dp0,並得到%〜dp0 ... – massaki

+1

@massaki:它不起作用從命令提示符;它僅適用於批處理文件。 '%dp0'是批處理文件的第0個參數的驅動器和路徑,它是批處理文件本身的完整路徑。 – tenfour

2

我認爲這裏有一個小confussion。 %CD%始終擁有當前目錄,因此您不需要添加任何內容即可。但是,通過重讀您的原始問題,我認爲您需要當前目錄的最後一部分,即當前位置的名稱,不包括以前的所有位置。如果是這樣,那麼你可以使用這個:

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

我意識到這是很老,但只是想讓你知道這個錯誤:delims = \」是意外的在這個時候。 –

相關問題