evo*_*n91 4 windows copy batch-file
我有一些东西,每晚都会创建一个包含文件的新文件夹.有谁知道如何创建一个脚本,将最新/最新文件夹的内容复制到网络共享并覆盖网络共享中的任何文件和文件夹?一直在挠我的脑袋.
提前致谢.
这样的事情可能符合你的目的:
SET "src_root=D:\root\for\source\directories"
SET "tgt_path=\\NETWORK\SHARE\target\path"
DIR "%src_root%" /B /AD /O-D /TC > "%TEMP%\dirlist.tmp"
< "%TEMP%\dirlist.tmp" SET /P last_dir=
FOR /D %%I IN ("%tgt_path%\*") DO RD "%%I" /S /Q
DEL "%tgt_path%\*" /Q
XCOPY "%src_root%\%last_dir%\*" "%tgt_path%" /S /E
Run Code Online (Sandbox Code Playgroud)
该src_root变量应包含创建每日文件夹的文件夹的路径,并且tgt_path是要复制的最新文件夹内容的目标路径.
该DIR命令设置为以下列方式返回根文件夹的内容:
输出中没有额外信息,只有names(/B);
没有文件,只有文件夹(/AD);
sort(/O…)…-…以文件夹date(…D)的降序()顺序输出;
日期是文件夹的创建(/TC)的日期.
输出重定向到临时文件,然后将其第一行读入变量(SET /P命令).这条信息与根路径和目标路径一起最终首先用于删除,然后用于复制文件.
删除分两步完成:首先是文件夹(循环中的RD命令FOR /D),然后是文件(DEL).我想在这一点上注意到,这个剧本不会在你身边的任何阶段进行干预,我理解这是你的意图.因此,它并不期望确认在目标路径删除的文件和文件夹,所以,当你运行该脚本,旧的内容将被删除默默(这是效果/Q既使用开关RD和DEL).
复制完成时XCOPY,因为它允许我们保留源文件夹(/S交换机)的结构,包括空子目录(/E),如果有的话.
您可以通过/?在命令提示符下使用switch 调用其中任何命令来获取有关此处提到的每个命令的更多信息.
| 归档时间: |
|
| 查看次数: |
7709 次 |
| 最近记录: |