【问题标题】:Copying a set of specific files from a directory to another directory while retaining folder structure将一组特定文件从一个目录复制到另一个目录,同时保留文件夹结构
【发布时间】:2014-04-22 14:09:46
【问题描述】:

我有一个如下所示的目录:

\isa\documents\2004\2008\jac\file1.txt
\isa\documents\2004\jan\file1.txt
\isa\scannedDocs\2004\2009\jan\file2.pdf
\isa\documents\2005\2008\jac\file1.txt
\isa\documents\2003\jan\file1.txt
\isa\scannedDocs\2002\2009\jan\file2.pdf

我有一个我需要复制的文件列表(从数据库中导出),但是因为我不需要目录中的每个文件,我只想要从我的列表中复制的文件:

文件需要的.txt:

\isa\documents\2004\2008\jac\file1.txt
\isa\documents\2004\jan\file1.txt
\isa\documents\2004\jac\file3.txt
\isa\documents\2003\jan\file1.txt

基本上:

  1. 我需要复制出所需的特定文件,然后
  2. 找不到文件时记录,以及,
  3. 我需要保留文件夹结构,因为文件可能具有相同的名称,只是位于不同的目录中。

它在 Windows 7 机器上,我可以运行 PowerShell 和批处理文件。我尝试了 robocopy 和 xcopy ,要么得到所有目录但没有文件,要么得到所有文件但没有目录......

任何帮助都会很棒。

编辑:

好的,所以我尝试了 Robocopy,但它要么复制目录而没有文件,要么复制文件且没有目录。我还没有在 powershell 中尝试过任何东西,但这可能就是这样......

这是 Windows,我可能只是在上面写错了斜线,我在两种环境之间工作,只是试图解释问题。

我尝试过的事情:

@echo off
set src_folder="C:\batchScripting\TEST_DIR\"
set dst_folder="C:\batchScripting\COPY2_DIR\"
robocopy "C:\batchScripting\TEST_DIR" "C:\batchScripting\COPY2_DIR" FileList.txt /S /V /NP /LOG:"log.log" /R:10 /W:30 

 @echo off
 set src_folder=C:\batchScripting\TEST_DIR\
 set dst_folder=C:\batchScripting\COPY2_DIR\
 for /f "tokens=*" %%i in (File-list.txt) DO xcopy /s /i "%src_folder%\%%i" "%dst_folder%"

【问题讨论】:

  • 那么问题出在哪里?阅读files-needed.txt?检查文件是否存在或丢失?实际抄袭?完全不同的东西?
  • 除了vonPryz所说的,你还尝试过什么? mattgemmell.com/what-have-you-tried
  • 如果 directory 使用正斜杠,那么它不是 Windows/Batch。你的意思是使用反斜杠吗?数据库中的列表是否真的使用正斜杠?我可以想到几种方法来做到这一点。为您的失败尝试提供代码将非常有帮助。

标签: windows batch-file xcopy robocopy


【解决方案1】:
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%a IN (q23221996.txt) DO (
 IF EXIST "%sourcedir%%%a" (ECHO f|xcopy /y "%sourcedir%%%a" "%destdir%%%a" 2>NUL >nul
 ) ELSE (ECHO "%sourcedir%%%a" does NOT exist)
)

GOTO :EOF

我使用了一个名为 q23221996.txt 的文件,其中包含您的数据用于我的测试。 sourcedirdestdir 都设置为适合我的系统。

如果目标文件已经存在,xcopy 命令上的 /y 将强制覆盖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-14
    • 2019-07-12
    • 2012-02-15
    • 2016-04-04
    • 2015-10-17
    • 2013-05-21
    • 2013-06-01
    相关资源
    最近更新 更多