2013-01-13 39 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

这很好用,谢谢! –

相关问题