2012-11-21 44 views
2

我一直在尋找這個答案,沒有發現可以真正解決我的問題 - 對不起,如果已經有一個類似於這個,我沒有回答的職位找。批處理,文件複製和拖放錯誤

第1章)
我有一個批處理文件,應該將任何文件/文件夾(遞歸)複製到我的USB閃存驅動器中的特定文件夾。所以,我寫了這個:

echo Copying files... 
xcopy /s /i %1 \folder\Subfolder\%1 

這原來脹大如果我叫命令行的批處理文件,但它停止工作,如果我拖動對象(文件/文件夾)到蝙蝠本身。我確定shell必須返回一個錯誤消息,但我不能讀取它,因爲命令行窗口照常即時關閉(這就是爲什麼我從命令行運行它)的原因。

你能幫我解決這個問題嗎?

第2章)
我想批處理文件,以便能夠從兩種情況來區分:
一個)複製該文件「C:\ Document.doc」到「\文件夾\子文件夾」
b )將文件「C:\ SomeFolder」複製到\文件夾\子文件夾\ SomeFolder「

我的代碼已經做了b),它只是不區分a)和當我嘗試複製單個文件它是什麼這是: 該指令

xcopy /s /i %1 \Folder\SubFolder\%1 

成爲

xcopy /s /i C:\Document.doc \Folder\SubFolder\C:\Document.doc 

,而不是

xcopy /s /i C:\Document.doc \Folder\SubFolder\Document.doc 

我怎樣才能讓一批能夠糾正呢?

在此先感謝!

+0

將「暫停」添加到批處理文件的末尾會使窗口保持打開狀態(以便您可以查看錯誤),直到您將其解除爲止。 –

+0

坦克!非常好的主意! – K09P

+0

拜託,你能舉個例子說明你想要的情況A)和b)更新我的答案嗎?我可以解決它,但我不明白,對不起我的英語。 – ElektroStudios

回答

1

%1具有文件的絕對路徑,所以當你拖動一個文件,你是在告訴CMD做到這一點:

xcopy /S /i "C:\complete path of file\file.ext" "\folder\Subfolder\C:\complete path of file\file.ext" 

您需要使用的參數參數,以獲得想要的東西(絕對路徑,文件名,擴展名,文件大小,你想要什麼)

這樣的:

xcopy /s /i "%~1" "\folder\Subfolder\%~nx1" 

的例子做:

因爲默認情況下的命運發生文件名原文件同名

xcopy /s /i "%~1" "\folder\Subfolder\" 

xcopy /S /i "C:\complete path of file\file.ext" "\folder\Subfolder\filename.ext" 

但實際上你並不需要使用第二個參數,就可以簡化爲這一點。