Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 将一组特定文件从一个目录复制到另一个目录,同时保留文件夹结构_Windows_Batch File_Xcopy_Robocopy - Fatal编程技术网

Windows 将一组特定文件从一个目录复制到另一个目录,同时保留文件夹结构

Windows 将一组特定文件从一个目录复制到另一个目录,同时保留文件夹结构,windows,batch-file,xcopy,robocopy,Windows,Batch File,Xcopy,Robocopy,我有一个目录,如下所示: \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 我有一个需要复制

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

\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
我有一个需要复制(从数据库导出)的文件列表,但因为我不需要目录中的每个文件,所以我只需要从列表中复制的文件:

Files-needed.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
基本上:

  • 我需要复制出所需的特定文件,以及
  • 在找不到文件时记录,并且
  • 我需要文件夹结构保留,因为文件可能有相同的名称,只是在不同的目录 它在Windows7机器上,我可以运行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关闭
    SETLOCAL
    设置“sourcedir=U:\sourcedir”
    设置“destdir=U:\destdir”
    对于/f“delims=”%(q23221996.txt)中的%%a,请执行以下操作(
    如果存在“%sourcedir%%%a”(回显f|xcopy/y“%sourcedir%%%a”%destdir%%%a“2>NUL>NUL
    )ELSE(回显“%sourcedir%%%a”不存在)
    )
    后藤:EOF
    
    我使用了一个名为
    q23221996.txt
    的文件,其中包含用于测试的数据
    sourcedir
    destdir
    都是根据我的系统设置的


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

    那么问题出在哪里?读取所需的
    文件.txt
    ?正在检查文件是否存在或丢失?实际复制?完全不同的东西?除了vonPryz说的,你试过什么?如果
    目录
    使用前斜杠,则它不是Windows/Batch。你是想用反斜杠吗?数据库中的列表真的使用前斜杠吗?我可以想出几种方法来做到这一点。为失败的尝试提供代码将非常有用。
     @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%"