如何在PowerShell中动态获取具有特定名称的文件

时间:2016-08-31 05:54:09

标签: powershell batch-file scripting

我希望我的脚本从多个目录(位置)中获取某些文件。

例如:

设置1:

关注C:\test\ext

中的文件
20160830.ext  -- (CurrentDate - 1).ext
20160823.ext  -- (CurrentDate - 7).ext
20160802.ext  -- (CurrentDate - 28).ext

来自C:\test\nxt

的文件
20160830.nxt  -- (CurrentDate - 1).nxt

设置2:

来自C:\test2\ext的文件(这些文件在名称前面有一个前缀)

IND20160830.ext  -- (INDCurrentDate - 1).ext
IND20160823.ext  -- (INDCurrentDate - 7).ext
IND20160802.ext  -- (INDCurrentDate - 28).ext

关注C:\test2\nxt

中的文件
IND20160830.nxt  -- (INDCurrentDate - 1).nxt

我使用以下命令将当前日期转换为yyyymmdd格式

$Curr_date = (get-date).ToString('yyyyMMdd')

输出:20160831

但我不确定如何根据上面列出的条件从这些目录中获取文件,因为它必须是动态的,因为脚本将安排每周运行,并且应该按照上述条件获取文件。

2 个答案:

答案 0 :(得分:1)

这是将您的一个文件从C:\test\ext复制到桌面上名为Output的文件的一个小示例。 请注意文件名周围的""。这意味着您的文件名中的空格已被排除。

@ECHO OFF
xcopy "C:\test\ext\20160830.ext  -- (CurrentDate - 1).ext" "%userprofile%\Desktop\Output\"
pause

您需要找到一种方法对所有文件执行此操作。如果您已经知道文件名,请不要使用日期。

答案 1 :(得分:0)

所以这就是我所做的:

  1. 我先以正确的格式提取日期 ' $ Date =(Get-date.AddDays(-1).TopString(' yyyyMMdd')'

  2. 然后创建另一个变量' $ V1 =" $ Date.ext"'

  3. ' if($ file.Name -eq $ V1) {

    Copy-Item -Path $ file.FullName -Destination $ Path

    }'

  4. 这很好用。