Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Powershell 如何批量复制文件夹,但仅复制新文件夹中的zip文件以进行存档?_Powershell_Batch File_Zip_Archive_Robocopy - Fatal编程技术网

Powershell 如何批量复制文件夹,但仅复制新文件夹中的zip文件以进行存档?

Powershell 如何批量复制文件夹,但仅复制新文件夹中的zip文件以进行存档?,powershell,batch-file,zip,archive,robocopy,Powershell,Batch File,Zip,Archive,Robocopy,我正在设置一个作业,以允许我将日志文件复制为Windows Box上的计划批处理作业 计算机A上的当前目录是: Logs\ YYYYMMDD\ Logfile1.log Logfile2.log Logfile3.log 这台机器通常在任何时候都保存3天的日志 我已经将Robocopy作业设置为另一台服务器(机器B)上的计划任务,以将文件复制到机器B,但不移动已复制的任何内容,使用此命令 Robocopy

我正在设置一个作业,以允许我将日志文件复制为Windows Box上的计划批处理作业

计算机A上的当前目录是:

Logs\   YYYYMMDD\   Logfile1.log
                    Logfile2.log
                    Logfile3.log
这台机器通常在任何时候都保存3天的日志

我已经将Robocopy作业设置为另一台服务器(机器B)上的计划任务,以将文件复制到机器B,但不移动已复制的任何内容,使用此命令

Robocopy "\\machineA\Logs" "\\machineB\LOGSTORAGE\machineA\Logs" /s /zb /r:2 /w:2 /eta /LOG+:\\machineB\LOGSTORAGE\logmove.log /TEE
我想要的是压缩机器A上的文件,然后移动它们,而不是复制它们,并确保在移动它们之后,作业不会创建重复的压缩文件

我可能会在另一个位置重新创建文件夹结构并共享它,这样机器B就可以访问文件夹,但内容是zip文件,如下所示:

Logs\       YYYYMMDD\       Logfile1.zip
                            Logfile2.zip
                            Logfile3.zip
理想情况下,我希望使用Windows进行压缩,而无需安装7Zip或其他压缩软件。提到PowerShell要做这项工作,但我不知道如何根据自己的要求编辑此内容

由于机器上随时可能有3天的日志,有没有办法确保zip作业只压缩尚未移动到最终目标的文件


有人能帮我吗?

我不熟悉Robocopy,但是你可以创建一个批来压缩文件,使用Robocopy复制它们,然后删除它们。这可以通过如下方式将Robocopy代码放在两者之间来实现(抱歉,这使用了7zip):


这个答案并不完美,因此如果您不理解某些内容,请询问我,我将尝试澄清。

这是一段很长的时间,但我最终改变了压缩整个文件夹的要求,因为压缩文件意味着文件日期被保存为实际的压缩创建日期,而不是原始日期。对于此任务,日期都很重要。最后,只压缩文件夹而不创建临时目录更容易,然后让机器B使用Robocopy抓取文件

这就是我最后用的

@echo off
for /d %%x in ("C:\Program Files\Logs\*.*") do start "C:\Program Files\7-Zip\7z.exe" /b /low /wait "C:\Program Files\7-Zip\7z.exe" a -tzip "%%x.zip" "%%x\"

你的问题超出了论坛工作的范围,imo.@endro那么我可以在哪里问这个问题,这样我就可以得到帮助?我会推荐一个更具体的网站,例如。
@echo off
for /d %%x in ("C:\Program Files\Logs\*.*") do start "C:\Program Files\7-Zip\7z.exe" /b /low /wait "C:\Program Files\7-Zip\7z.exe" a -tzip "%%x.zip" "%%x\"