Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Batch file 使用通配符文件夹批复制某些文件_Batch File_Xcopy - Fatal编程技术网

Batch file 使用通配符文件夹批复制某些文件

Batch file 使用通配符文件夹批复制某些文件,batch-file,xcopy,Batch File,Xcopy,我对bat文件的技能/知识有限。基本上,我使用它们来整理特定文件类型的文件夹,或者将文件备份到dropbox文件夹 我现在想使用它们来查找某个文件夹路径中的文件,并将其复制到镜像文件夹路径的本地驱动器。。。文件夹路径有50个文件夹,其中有1000多个子文件夹。 网络位置的两个示例: 报告\ASD01\ASD01\u 01 报告\ASD01\ASD01\u 02 报告\ASD01\ASD01\u 03 报告\DVC05\DVC05\u 01 报告\DVC05\DVC05\u 12 报告\DVC05

我对bat文件的技能/知识有限。基本上,我使用它们来整理特定文件类型的文件夹,或者将文件备份到dropbox文件夹

我现在想使用它们来查找某个文件夹路径中的文件,并将其复制到镜像文件夹路径的本地驱动器。。。文件夹路径有50个文件夹,其中有1000多个子文件夹。 网络位置的两个示例:
报告\ASD01\ASD01\u 01
报告\ASD01\ASD01\u 02
报告\ASD01\ASD01\u 03
报告\DVC05\DVC05\u 01
报告\DVC05\DVC05\u 12
报告\DVC05\DVC05\u 13
报告\DVC06\DVC06\U 01

每个文件夹包含几个文件。我对将pdf和CSV从子文件夹复制到本地驱动器上的镜像文件夹感兴趣

我有一个谷歌和XCOPY不能复制文件夹作为通配符
报告\*\*.pdf

我会定期运行bat来更新任何新文件。 我无法复制子文件夹的全部内容,因为它们太大了


我希望我已经提供了足够的信息,并在此感谢任何帮助

假设您想在目标位置重新创建文件夹结构,那么Robocopy就是您的选择

 Robocopy "C:\Source\Reports"  "C:\Destination\Reports" *.pdf /S /DCopy:T /NP /MT:64 /R:2 /W:2 /B
上述操作将所有PDF文件从源复制到目标,并将它们放在相同的子文件夹中

您可以在cmd脚本中使用上述内容,也可以将其粘贴到CLI中

如果您不想要文件夹结构,那么
For
循环就是您的伙伴

但是,您必须稍微更改它,这取决于您是想在CLI中还是在aCMD脚本中使用它

CLI CopyReplace.cmd
您是否要求将在
报告
下找到的所有.pdf和.csv文件复制到您指定的目录中?我希望复制包含pdf和csv的所有文件夹。还有镜像的目录。我明天可以试一试,让你知道!这起作用了。谢谢有没有一种方法可以在没有“以管理员身份运行”权限的情况下运行它?我想我的一些同事没有管理员权限。只要源和目标不需要管理员权限,你就应该能够在rhem之间阅读和复制
@For /F "Tokens=*" %A IN ('
  WHERE /R "C:\Source\Reports" /F "*.pdf"
') DO @(
  IF  NOT EXIST "C:\Destination\%~nxa" @(
    Copy /B /Y /F "%~fA" "C:\Destination\%~nxa"
  )  ELSE @(
     ECHO."C:\Destination\%~nxa" Already Exists, NOT Copying  "%~fA" due to conflict!
  )
)
@(
  ECHO OFF
  SETLOCAL EnableDelayedExpansion
  SET "_Src=C:\Source\Reports"
  SET "_Dst=C:\Destination"
  SET "_FileGlob=*.pdf"
)

For /F "Tokens=*" %%A IN ('
  WHERE /R "%_Src%" /F "%_FileGlob%"
') DO (
  IF  NOT EXIST "%_Dst%\%%~nxa" (
    Copy /B /Y /F "%%~fA" "%_Dst%\%%~nxa"
  )  ELSE (
     ECHO."%_Dst%\%%~nxa" Already Exists, NOT Copying  "%%~fA" due to conflict!
  )
)