2013-03-04 242 views
0

我使用MD創建目錄。一旦你插入USB驅動器,你選擇它,並創建目錄到驅動器,但是我試圖將文件從源文件複製到USB上的新目錄。我嘗試了很多東西,但似乎沒有任何工作。 這裏是.bat文件使用.bat將文件夾複製到新創建的目錄

@echo OFF 


diskpart 

set source=C:\Users\Public\Documents 

set DESTINATION= %computername% %DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%-%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%/ 

@echo DESTINATION =%DESTINATION% 

:: Create new directory 
md "%1\%DESTINATION%" 

xcopy %source% %DESTINATION% /y 

它創建了目錄,但它不將文件從源到新創建的目錄複製。我怎樣才能做到這一點?你如何傳遞一個論點?這是我第一次寫劇本。 謝謝!

+0

您是否將任何參數傳遞給腳本? – 2013-03-04 00:58:07

+0

http://stackoverflow.com/questions/9114887/batch-to-copy-files-with-xcopy – 2013-03-04 01:14:05

回答

0

這裏有幾個問題。

  1. 你正在創建目的目錄%1\%DESTINATION%XCOPY您所指定只是%DESTINATION%%1\很可能不是複製時的當前目錄,這必須解釋爲什麼預期的目標目錄沒有收到任何文件。因此,您應該在XCOPY的前面添加%1\%DESTINATION%

  2. 目標目錄名稱(由SET DESTINATION命令設置)包含空格。這意味着在大多數文件操作上下文中名稱必須用雙引號引起來。 「最」我的意思是有一些命令不需要名稱被引用,但我仍然不會建議省略引號。而且XCOPY不是那些命令之一,因此,您的目標路徑實際上應該是"%1\%DESTINATION%",就像在MD命令中一樣。

  3. 可能不是問題,但我不確定。你在=之後的SET DESTINATION命令後面有一個空格。這個空間實際上成爲價值的一部分。除非您的目的地名稱以空格字符開頭,否則您可能需要刪除它。

  4. 同樣的問題,名稱末尾的尾部/是不必要的。在這個特定的腳本中這可能不是問題,但是通常你必須更加小心地使用這樣的路徑作爲更復雜路徑的一部分,特別是當名稱在更復雜的開始或中間時路徑。使用\來代替或者只是略去尾隨分隔符,這樣會更麻煩。

最後,你可能忽略MD命令,讓XCOPY爲您創建目標目錄,如果不存在的話。將/I交換機添加到XCOPY以避免關於目標是文件還是目錄的請求。

請注意,如果源目錄完全爲空,則不會創建目標。爲確保它已創建,您還需要添加/E。但是,這也意味着複製整個目錄結構,包括空的 sub目錄(如果有的話)。如果這不符合您的意圖,請堅持使用您當前的MD + XCOPY方法。

0

試試這個代碼,它爲我工作。它確實複製了源文件夾中的所有文件。只需將源變量和目標變量分配給適當的值即可。

@ECHO OFF 
setlocal enabledelayedexpansion 
set SOURCE="C:\Users\Public\Documents" 
SET DEST="%computername% %DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%-%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%" 

echo %SOURCE% %DEST% 

IF NOT EXIST %DEST% mkdir %DEST% 

xcopy %SOURCE%\*.* %DEST%\*.* /Y 
相關問題