我有一個批處理文件,我不知道它會是什麼驅動器號,因爲我將會移動很多。在批處理文件中創建一個相對路徑
例如: 的Adobe文件駐留在:j:\文件\新建文件夾\ USB \ Adob
批處理文件執行從:j:\文件\新建文件夾\ USB \ USBSTICK
所以我試了代碼:
xcopy /s /y "%~dp0\..\..\USB\Adob\*" "C:\Program Files\"
但它不會複製文件。我怎樣才能讓它動態?
我有一個批處理文件,我不知道它會是什麼驅動器號,因爲我將會移動很多。在批處理文件中創建一個相對路徑
例如: 的Adobe文件駐留在:j:\文件\新建文件夾\ USB \ Adob
批處理文件執行從:j:\文件\新建文件夾\ USB \ USBSTICK
所以我試了代碼:
xcopy /s /y "%~dp0\..\..\USB\Adob\*" "C:\Program Files\"
但它不會複製文件。我怎樣才能讓它動態?
嘗試不使用「\」,因爲它是%〜dp0的一部分。我的意思是,%〜dp0的內容總是以「\」結尾。
例子:
xcopy /s /y "%~dp0..\..\USB\Adob\*" "C:\Program Files\"
編輯
以防萬一......
is Adob\* or Adob\*.* ??
仍然沒有快樂0文件被複制 – Mike 2010-12-02 06:17:08
我從您的層次結構的瞭解,這也將工作:
xcopy /s /y "..\Adob\*" "C:\Program Files\"
由於J:\Files\New folder\USB
是一個常見前綴,並且您正在運行J:\Files\New folder\USB\USBSTICK
的批處理文件,所以無論您處理的驅動器號是什麼,都應該可以正常工作。
我不確定我是否完全理解您的問題。但在我看來,根據我的理解,有幾種解決方案可以解決問題。
如果路徑始終是固定的,但只有盤符可能會有所不同,你可以只使用相對路徑:
xcopy /s /y "..\Adob\*" "C:\Program Files\"
從任何驅動器調用批處理程序,然後將如預期所提供的批處理文件總是存在於與Adob相同的目錄中的USBSTICK中。
如果源路徑可以改變,只需用一個參數替換不同的部分,並調用使用正確的路徑批處理文件:
xcopy /s /y "%1\*" "C:\Program Files\"
從任何驅動器中調用批處理程序,然後位置會工作作爲預計當您提供正確的路徑時:
xcopybatch J:\Files\New folder\USB\Adob
由於驅動器號似乎是您的方案的相對部分。我相信這應該對你更好,除非我誤解了你。
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.
獲取驅動器盤符的簡單方法是「echo!cd:〜1!」。這應該回顯CD(當前目錄)變量中的第一個字符。 – 2013-02-24 01:18:41