我的要求是获取文件夹路径列表 - 一些在路径中具有yyyyMMdd日期 - 并根据请求将它们复制到另一个位置。
有些文件夹只需要按原样复制 有些需要复制五天的历史记录,计算前五个日期并将它们替换为文件夹路径 有些人需要做同样的事情,但有15或90天的历史。
我正在尝试确定最佳方法。我原本打算将它作为BATCH文件进行,但我看不到如何计算和替换BAT中循环中的日期。
在基本脚本中有更好的方法可以从命令行执行吗?
答案 0 :(得分:2)
虽然这不是代码编写服务,但听起来您对该语言不熟悉,所以这里有些东西可以帮助您完成此任务。将来我建议您在问题中添加一些已尝试过的代码,因为您可能会收到更多回复。
# Get-Date is a cmdlet in PowerShell to get the current date
# We use AddDays(-5) to subtract however many days we would like. Here we are subtracting 5 days from current date
# ToString converts the data type so that we can use the custom date format of yyyyMMdd
$Date = (Get-Date).AddDays(-5).ToString('yyyyMMdd')
# Get-Item cmdlet in PowerShell is used to get files in a directory
# Select allows us to get a specific piece of data from the files found and ExpandProperty hides the data header
$Files = Get-Item -Path C:\Temp\*$Date.txt | Select -ExpandProperty FullName
# Copies Files Found with Get-Item
Copy-Item -Path $Files -Destination C:\SomePathHere-Verbose -Force
输出如下所示:
PS C:\> $Date = (Get-Date).AddDays(-5).ToString('yyyyMMdd')
# What is stored in $Date variable
PS C:\> $Date
20160708
PS C:\> $Files = Get-Item -Path C:\Temp\*$Date.txt | Select -ExpandProperty FullName
# What is stored in $Files variable
PS C:\> Get-Item -Path C:\Temp\*$Date.txt | Select -ExpandProperty FullName
C:\Temp\Somefile20160708.txt
C:\Temp\SomeOtherFile20160708.txt
PS C:\> Copy-Item -Path $Files -Destination C:\Test -Verbose -Force
VERBOSE: Performing the operation "Copy File" on target "Item: C:\Temp\Somefile20160708.txt Destination: C:\Test\Somefile20160708.txt".
VERBOSE: Performing the operation "Copy File" on target "Item: C:\Temp\SomeFile220160708.txt Destination: C:\Test\SomeOtherFile220160708.txt".
希望这可以帮助您找到解决方案。 PowerShell非常适合这些类型的任务,我绝对建议您更多地探索它。