我想将文件从某个路径复制到某个目标。我想复制的文件名称中只包含数字,并且始终具有特定结构,如“xxxx_xxxxxx.upd”。遗憾的是目录中还有其他 .upd 文件,因此我无法复制 *.upd。
这是我做的:
Copy-Item -Path S:\Backup\Updates\*.upd -Destination S:\Running\Main
现在我获得了所有 .upd 文件,但我只想要那些名称中不包含字符的文件,例如 2021_030252。提前致谢!
答案1
这是获取这些文件的一种方法。[咧嘴笑]
它能做什么 ...
- 设置常量
- 从源中抓取与过滤器匹配的所有文件
我没有*.upd
文件,所以我使用*.log
文件。[咧嘴笑] - 使用
W-O
cmdlet 过滤掉任何与正则表达式模式不匹配的文件,
该模式要求.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
字母/数字组合的文件......并且这些文件已按预期排除。