在编写PS脚本时非常漂亮-写了这篇文章并一直在积极使用它,尽管仍然需要一些人工干预才能实现我的目标,而我想完全自动化。
我会尽力解释清楚;
我正在尝试将'.bak'文件每天从源文件夹复制到特定目录中,该源文件夹中已放有文件。问题是我创建脚本的方式,每次运行脚本时,都会创建一个新文件夹,其中包含与先前复制的文件相同的文件。
要复制的文件都按照日期顺序使用相同的名称结构;
#TODO
我该如何编写脚本,使其仅复制较新的文件,而不复制以前已复制的文件?
最好仅创建一个新文件夹,然后更改文件名的特定部分。
这是脚本;
$basedir = "Path:\path" $today = (Get-Date).ToString('MM_dd_yy') $Filter = '*.bak' $location = New-Item -Path $basedir -Type Directory -Name $today Copy-Item -Path 'Path:\path' -Destination $location -Filter $Filter -Recurse
任何指针都将不胜感激! 预先感谢您的帮助!
答案 0 :(得分:0)
我不确定是否有简单的方法来编写此代码,但是通常的答案是使用Get-ChildItem cmdlet。
“ Get-ChildItem cmdlet可以在一个或多个指定位置获取项目。如果该项目是容器,则它将获取容器内的项目,称为子项目。可以使用-Recurse参数在以下位置获取项目所有子容器,并使用-Depth参数限制要递归的级别数。”
通过使用Get-ChildItem,可以获得两个目录中的文件列表,然后进行比较以查看它们是否具有相同的名称。然后根据您希望用来比较它们的条件构建一个if()参数。
这不是完整的答案,但这是一个很好的起点。
答案 1 :(得分:0)
感谢大家参与,非常感谢!
我已切换到批处理文件路由,并创建了以下文件来实现我的目标;
@echo off
setlocal
set _source="C:\users\user1\desktop\source"
set _dest="C:\users\user1\desktop\dest"
robocopy %_source% %_dest% *.bak /mir /XC /XN /XO
鼓励对此脚本发表任何意见!