PowerShell 仅复制名称中带有数字的文件

PowerShell 仅复制名称中带有数字的文件

我想将文件从某个路径复制到某个目标。我想复制的文件名称中只包含数字,并且始终具有特定结构,如“xxxx_xxxxxx.upd”。遗憾的是目录中还有其他 .upd 文件,因此我无法复制 *.upd。

这是我做的:

Copy-Item -Path S:\Backup\Updates\*.upd -Destination S:\Running\Main

现在我获得了所有 .upd 文件,但我只想要那些名称中不包含字符的文件,例如 2021_030252。提前致谢!

答案1

这是获取这些文件的一种方法。[咧嘴笑]

它能做什么 ...

  • 设置常量
  • 从源中抓取与过滤器匹配的所有文件
    我没有*.upd文件,所以我使用*.log文件。[咧嘴笑]
  • 使用W-Ocmdlet 过滤掉任何与正则表达式模式不匹配的文件,
    该模式要求.BaseName仅包含数字 0-9 和下划线。
  • 将文件保存到$FileList
  • 在屏幕上显示该列表

代码 ...

$SourceDir = $env:TEMP
$Filter = '*.log'

$FileList = Get-ChildItem -LiteralPath $SourceDir -File -Filter $Filter |
    Where-Object {$_.BaseName -match '^[0-9_]+$'}

$FileList

输出 ...

    Directory: C:\Temp


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021-03-01   5:32 PM              0 12345_9604.log
-a----        2021-02-26   6:33 PM              0 1_560.log

请注意,我的临时目录中有带*.log字母/数字组合的文件......并且这些文件已按预期排除。

相关内容