遍历文件从UNC路径到本地目录

时间:2019-11-19 20:51:28

标签: windows batch-file cmd robocopy unc

给出一个UNC和一个本地目录,我将如何以一种简单,递归的方式将文件从remove复制到local。

例如:-这当前有效,并将MyDIR中的所有文件复制到MyDEST:

SET MyDIR="\\123.10.10.10\Logs\Files\Server12\Folder1"
SET MyDEST="C:\Users\Desktop\Logs\Files"
robocopy %MyDIR% %MyDEST% /MIR

我遇到的问题是,在MyDIR中,Server12存储了多个(通常是3个)文件夹,并且其中有我需要的文件,因此一定程度的迭代会有所帮助。

所以我可以尝试一些手动工作,并且

SET MyDIR1=.....Folder1"
SET MyDIR2=.....Folder2"
SET MyDIR3=.....Folder3"

...根据需要 但我还必须

robocopy %MyDIR1% %MyDEST% /MIR
robocopy %MyDIR2% %MyDEST% /MIR
robocopy %MyDIR3% %MyDEST% /MIR

这很容易,但是有没有办法遍历列表甚至更好,有没有办法遍历Server12的所有文件夹并复制所有文件?

我当时在考虑使用Powershell,但我只是想将某些东西放在一起以便快速,偶尔使用。我愿意但不确定是否应该朝这个方向发展,因为我对此有一些经验,但经验不足。

我能够使某些for循环工作,但是在尝试使其与UNC路径一起工作(以及使用%CD%变量列出UNC目录)时出错。

1 个答案:

答案 0 :(得分:0)

最后,副本可以满足我的需求,但是我的本地路径中包含破折号(是'-',因为我的公司使用的是OneDrive,所以出现了问题)使其难以正常工作。我向FORFILES传递了变量,其中包含破折号(如下所示)。

最后,我不得不使用一个临时文件夹。...

SET MyRootDIR="\\123.10.10.10\Logs\Files\Server12"
SET MyDEST="C:\Users\Desktop\Logs - files\Files"
SET MyTempDEST="C:\LOGSTemp"

REM Delete these folders to empty them
DEL /Q %MyDEST%\*.*
DEL /Q %MyTempDEST%\*.*

PushD %MyRootDIR% &&(
    FORFILES /M *.* /S /C "cmd /c copy @file %MyTempDEST%"
     ) & PopD

MOVE %MyTempDEST%\*.* %MyRootDIR%
  • 我只需要文件,因为下一步是解压缩文件并在文件中执行关键字搜索,将结果输出到results.txt文件中。
  • 变量位于顶部,可以更轻松地更改为不同的服务器实例。
  • 它运行良好,但必须分两个步骤完成。在PushD中,如果将其更改为变量%MyRootDIR%,则会出现错误: 错误:无效的参数/选项-'-'。

尝试逃跑等,没有运气,但最终还是成功了