PS脚本复制新文件



在编写PS脚本方面很在行-写了这个并一直在积极使用它,尽管仍然需要一些手动干预来实现我的目标,我希望完全自动化。

我会尽力解释清楚;

我正试图将".bak"文件从一个源文件夹复制到一个特定的目录中,该文件夹每天都有文件放在其中。问题是我创建脚本的方式,每次运行脚本时,它都会创建一个新文件夹,其中包含一些与以前复制的文件相同的文件。

被复制的文件在日期顺序上都遵循相同的名称结构;

xxxx_2018_01_01_2131231.bak
xxxx_2018_01_02_2133212.bak  
xxxx_2018_01_03_2199531.bak

我如何编写脚本,使其只复制较新的文件,而不复制以前已经复制的文件?

如果只创建一个新文件夹,然后文件名的某个部分发生更改,也会很好。

这是剧本;

$basedir="路径:\Path"$today=(获取日期(.ToString('MM_dd_yyy'($Filter='*.bak'$location=新项目-路径$basedir-类型目录-今日名称$复制项目-路径"Path:\Path"-目标$location-筛选器$Filter-重复

非常感谢任何指针!提前感谢您的帮助!

我不确定是否有简单的编码方法,但一般的答案是使用Get-ChildItem cmdlet。

Get-ChildItem cmdlet获取一个或多个指定位置中的项。如果该项是容器,它会获取容器内的项,称为子项。您可以使用-Recurse参数获取所有子容器中的项,并使用-Depth参数限制要递归的级别数。

通过使用Get-ChildItem,您可以获得两个目录中的文件列表,然后比较它们是否具有相同的名称。然后根据您希望用来比较它们的标准构建一个if((参数。

这不是一个完整的答案,但这是一个很好的起点。

感谢大家的参与,非常感谢!

我已经切换到批处理文件路由,并创建了以下内容来实现我的目标;

@echo off
setlocal
set _source="C:usersuser1desktopsource"
set _dest="C:usersuser1desktopdest"
robocopy %_source% %_dest% *.bak /mir /XC /XN /XO

我们鼓励对这个剧本发表任何意见!

最新更新