2013-01-13 42 views
0

我有以下代碼:爲什麼xcopy會創建子目錄但將文件放入。?

@echo off 
cd %temp% 
rd /s /q svnbackup >nul 2>&1 
md svnbackup\uncomitted_db-pc 
cd svnbackup\uncomitted_db-pc 
type NUL>files.txt 
for /F "tokens=1*" %%T in ('svn status C:\SVN-EDGE') do (echo %%U>>files.txt && xcopy "%%U" . /E /S /I /F /H /K /X /Y /R) 

我得到files.txt以下的輸出:

C:\SVN-EDGE\SomeClient\BUTCHERED.docx 
C:\SVN-EDGE\SomeClient\Development notes.txt 
C:\SVN-EDGE\SomeClient\Received\~$formation for prospective clients.docx 
C:\SVN-EDGE\SomeClient\Sales\Estimates.xlsx 
C:\SVN-EDGE\SomeClient\Sales\Specification.docx 
C:\SVN-EDGE\SomeClient\Sales\~$Estimates.xlsx 
C:\SVN-EDGE\SomeClient\Sales\~$ecification.docx 
C:\SVN-EDGE\SomeClient\removed.docx 
C:\SVN-EDGE\SomeClient\site spec1.docx 
C:\SVN-EDGE\SomeClient\~$TCHERED.docx 
C:\SVN-EDGE\SomeClient\~$emoved.docx 
C:\SVN-EDGE\SomeClient\~$te spec1.docx 

但事實是,XCOPY創建內部%temp%\svnbackup\uncomitted_db-pcReceivedDevelopment文件夾,但隨後會將相關反正在%temp%\svnbackup\uncomitted_db-pc的頂層文件。

創建文件夾SVN-EDGESomeClient都沒有意義。我如何確保創建這些文件夾,並將上面單獨列出的xcopy文件放入正確的子目錄中?

回答

1

XCOPY表現得應該如此。它不會複製在源路徑中明確指定的文件夾層次結構。它只複製從通配符一側找到的文件夾,其中的命令沒有 - 每次都是XCOPYing特定文件。

沒有完全測試,但我相信你可以用以下代替你的FOR語句,一切都應該如你所願。

for /F "tokens=1*" %%T in ('svn status C:\SVN-EDGE') do (
    echo %%U>>files.txt 
    xcopy "%%U" ".\%%~pU" /F /H /K /X /Y /R 
) 
+0

這很好用,謝謝! –

相關問題