2014-09-26 125 views
0

我有一個文件夾結構獲取父目錄在Windows不能正常工作8批處理文件

c:\name\myname 

我寫一個批處理文件

test.bat的

@echo off 
echo %CD% 
echo %CD%\.. 
set k=%CD% 
set c=%k%\.. 
echo %k% 
echo %c% 
pause 

輸出

c:\name\myname 
c:\name\myname\\.. 
c:\name\myname 
c:\name\myname\\.. 

預期輸出

c:\name\myname 
c:\name 
c:\name\myname 
c:\name 

我已經安裝的窗戶8 OS。我想從當前目錄中獲取父目錄。可能是我不知道獲取父目錄的正確語法。

+1

相似http://stackoverflow.com/questions/16623780/how-to-get-windows-batchs-parent-folder – elimad 2014-09-26 06:18:04

+0

假設我有像c:\ user \ myname \ check \ test這樣的結構,我需要一個從這裏作爲c:\ user \ myname的路徑。我怎麼才能得到它? – Kumar 2014-09-26 06:52:58

回答

3

有兩種方法可以獲取文件/文件夾的引用:批處理文件的參數和for命令。第二個選項就是我們在這裏使用的。因爲它是不明確的,你需要什麼樣的父母,讓我們來看看如何獲​​得每個

1 - 獲取父當前Active Directory

for %%a in (..) do echo %%~fa 

的進去的for當前活動文件夾的父參考替換參數%%a,一旦我們有參考,得到了完整路徑

2 - 獲取文件夾的控股母公司的批處理文件

for %%a in ("%~dp0.") do echo %%~dpa 

同樣的想法。 %0是對當前批處理文件的引用,因此%~dp0是存儲批處理文件的驅動器和路徑。該值以反斜槓結束,因此,爲了獲得對該文件夾的引用,添加了一個附加點。一旦我們在%%a中引用了保存批處理文件的文件夾,%%~dpa將返回存儲%%a中引用的元素的驅動器和路徑。由於%%a是保存批處理文件的文件夾,%%~dpa是父文件夾,其中存儲了批處理文件夾的文件夾。

+0

假設我有一個類似c:\ user \ myname \ check \ test的結構,我需要一個從c:\ user \ myname的路徑。我怎麼才能得到它? – Kumar 2014-09-26 06:43:01

+1

@Kumar,'for %% a in(「c:\ user \ myname \ check \ test \ .. \ ..」)do echo %%〜fa' – 2014-09-26 07:12:12

+1

@kumar,或以相對方式'for%a在(.. \ ..)do echo%〜fa' – 2014-09-26 07:13:56

相關問題