2010-12-02 99 views
6

我有一個批處理文件,我不知道它會是什麼驅動器號,因爲我將會移動很多。在批處理文件中創建一個相對路徑

例如: 的Adobe文件駐留在:j:\文件\新建文件夾\ USB \ Adob​​

批處理文件執行從:j:\文件\新建文件夾\ USB \ USBSTICK

所以我試了代碼:

xcopy /s /y "%~dp0\..\..\USB\Adob\*" "C:\Program Files\" 

但它不會複製文件。我怎樣才能讓它動態?

+2

獲取驅動器盤符的簡單方法是「echo!cd:〜1!」。這應該回顯CD(當前目錄)變量中的第一個字符。 – 2013-02-24 01:18:41

回答

0

嘗試不使用「\」,因爲它是%〜dp0的一部分。我的意思是,%〜dp0的內容總是以「\」結尾。

例子:

xcopy /s /y "%~dp0..\..\USB\Adob\*" "C:\Program Files\" 

編輯

以防萬一......

  is Adob\* or Adob\*.* ?? 
+0

仍然沒有快樂0文件被複制 – Mike 2010-12-02 06:17:08

0

我從您的層次結構的瞭解,這也將工作:

xcopy /s /y "..\Adob\*" "C:\Program Files\" 

由於J:\Files\New folder\USB是一個常見前綴,並且您正在運行J:\Files\New folder\USB\USBSTICK的批處理文件,所以無論您處理的驅動器號是什麼,都應該可以正常工作。

0

我不確定我是否完全理解您的問題。但在我看來,根據我的理解,有幾種解決方案可以解決問題。

如果路徑始終是固定的,但只有盤符可能會有所不同,你可以只使用相對路徑:

xcopy /s /y "..\Adob\*" "C:\Program Files\" 

從任何驅動器調用批處理程序,然後將如預期所提供的批處理文件總是存在於與Adob相同的目錄中的USBSTICK中。

如果源路徑可以改變,只需用一個參數替換不同的部分,並調用使用正確的路徑批處理文件:

xcopy /s /y "%1\*" "C:\Program Files\" 

從任何驅動器中調用批處理程序,然後位置會工作作爲預計當您提供正確的路徑時:

xcopybatch J:\Files\New folder\USB\Adob 
2

由於驅動器號似乎是您的方案的相對部分。我相信這應該對你更好,除非我誤解了你。

xcopy /s /y "%~d0\Files\New folder\USB\Adob\*" "C:\Program Files\" 

更多的變量,你可以使用請按照下列步驟操作:
從CMD,輸入for /?並在底部閱讀。

%~I   - expands %I removing any surrounding quotes (") 
%~fI  - expands %I to a fully qualified path name 
%~dI  - expands %I to a drive letter only 
%~pI  - expands %I to a path only 
%~nI  - expands %I to a file name only 
%~xI  - expands %I to a file extension only 
%~sI  - expanded path contains short names only 
%~aI  - expands %I to file attributes of file 
%~tI  - expands %I to date/time of file 
%~zI  - expands %I to size of file 
%~$PATH:I - searches the directories listed in the PATH 
       environment variable and expands %I to the 
       fully qualified name of the first one found. 
       If the environment variable name is not 
       defined or the file is not found by the 
       search, then this modifier expands to the 
       empty string 

The modifiers can be combined to get compound results: 

%~dpI  - expands %I to a drive letter and path only 
%~nxI  - expands %I to a file name and extension only 
%~fsI  - expands %I to a full path name with short names only 
%~dp$PATH:I - searches the directories listed in the PATH 
       environment variable for %I and expands to the 
       drive letter and path of the first one found. 
%~ftzaI  - expands %I to a DIR like output line 

In the above examples %I and PATH can be replaced by other valid 
values. The %~ syntax is terminated by a valid FOR variable name. 
Picking upper case variable names like %I makes it more readable and 
avoids confusion with the modifiers, which are not case sensitive. 
相關問題