0

我有以下代码:

@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 在里面创建ReceivedandDevelopment文件夹,然后将相关文件放在无论如何%temp%\svnbackup\uncomitted_db-pc的顶层。%temp%\svnbackup\uncomitted_db-pc

任何时候都不会创建SVN-EDGESomeClient创建文件夹。如何确保创建了这些文件夹,并将上面单独列出的输入 xcopy 的文件放入正确的子目录中?

4

1 回答 1

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
)
于 2013-01-13T02:37:54.450 回答