如何在脚本中复制一系列日期的数据?

时间:2016-07-13 14:41:42

标签: powershell command-line

我的要求是获取文件夹路径列表 - 一些在路径中具有yyyyMMdd日期 - 并根据请求将它们复制到另一个位置。

有些文件夹只需要按原样复制 有些需要复制五天的历史记录,计算前五个日期并将它们替换为文件夹路径 有些人需要做同样的事情,但有15或90天的历史。

我正在尝试确定最佳方法。我原本打算将它作为BATCH文件进行,但我看不到如何计算和替换BAT中循环中的日期。

在基本脚本中有更好的方法可以从命令行执行吗?

1 个答案:

答案 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非常适合这些类型的任务,我绝对建议您更多地探索它。