【问题标题】:Why is xcopy making the subdirs but putting files in .?为什么 xcopy 制作子目录但将文件放入.?
【发布时间】:2013-01-13 01:23:30
【问题描述】:

我有以下代码:

@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-pc 中创建了ReceivedDevelopment 文件夹,然后将相关文件放在%temp%\svnbackup\uncomitted_db-pc 的顶层。

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

【问题讨论】:

    标签: for-loop batch-file directory-structure 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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 2019-11-24
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多