我已经看到了将两个文件夹的差异复制到本网站上的第三个文件夹的主题,而其他人却找不到一个适合我的建议解决方案。我想使用Robocopy,Xcopy或powershell。
文件夹名为当前,已更改,已移至。 当前是当前的生产文件夹。它包含各种文件,但我要复制和移动的文件都是.txt文件。
我已经想出如何使用/ XO开关使用Robocopy来复制差异较大的文件,或者从当前到已更改的新文件。我想在第1步中每天覆盖当前更改的文件。
但是对于第2步,我只需要将新复制到已更改的内容复制到第三个文件夹已移动,最终将被压缩并将FTP转换为其他文件夹服务器。 已移动文件夹应仅包含增量文件。我知道/ MOV命令,但我无法弄清楚如何将它用于我的目的。有关如何编写此脚本的任何建议吗?
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\current"
SET "destdir=U:\changed"
SET "targetdir=U:\moved"
xcopy /L /y /d "%sourcedir%\*.txt" "%destdir%\" |findstr /v /e "File(s)"
FOR /f "delims=" %%a IN (
'xcopy /L /y /d "%sourcedir%\*.txt" "%destdir%\" ^|findstr /v /e "File(s)"'
) DO (
ECHO %%a
COPY /y "%%a" "%targetdir%\"
COPY /y "%%a" "%destdir%\"
)
GOTO :EOF
您需要更改sourcedir
,destdir
和targetdir
的设置以适合您的具体情况(这些只是我使用的标准名称)。
将>nul
附加到COPY
命令以禁止报告消息(例如1 file copied
)
文件名的echo
显然是可选的。
逐行处理xcopy /L /D /Y
的输出到%%a
。 /L
选项生成列表但实际上并不复制文件。 /Y
强制在没有提示的情况下覆盖,并与/L
一起确保xcopy
完成而无需用户操作(响应overwrite?
提示)。应复制/D
指定“新的或更新的”文件。
findstr
过滤器会查找以/v
结尾的行/e
而不是 File(s)
- 这是{{的最后一行1}}输出。
xcopy /L
因此具有应复制的每个文件的名称,因此两个%%a
命令将新文件复制到两个所需目标目录中的每一个。 / p>