【问题标题】:Powershell GetChildItem using wrong path to find matchPowershell使用错误的路径获取ChildItem以查找匹配项
【发布时间】:2021-02-17 15:53:57
【问题描述】:

现在我正在尝试编写一个小的 Powershell 脚本来检查文件是否存在。 我的一个变量称为测试,其目的是在基本路径中查找不超过一天的文件

文件在逻辑中命名为:File2021-02-1717821等

我现在的代码:

$basepath='C:\Users\MyName\Documents\2020-09-06 193009 Testing'

$date=(get-date).AddDays(-1).ToString("YYYY-MM-dd")

$test=Get-ChildItem $basepath | Where-Object Name -match ($date)  | ForEach-Object {$_.FullName}

但 Test 只会返回脚本位置的文件,而不是 basepath 变量的文件。我还有一个变量来返回与测试条件匹配的最新文件,但它也返回脚本本身,而不是查看基本路径的目录。

$last = Get-ChildItem -Path $test | Sort-Object LastAccessTime -Descending | Select-Object -First 1

【问题讨论】:

  • [1] 是 $basepath 实际上指向文件所在的文件夹吗? [2] ToString("YYYY-MM-dd") --> ToString("yyyy-MM-dd") [3] 添加开关 -FileGet-ChildItem 以便只列出文件对象,而不是文件夹
  • 谢谢,我明天试试,告诉你进展如何

标签: powershell file directory


【解决方案1】:

这是你想要做的吗?

($basepath = 'D:\Temp\DateStringFiles')
# Results
<#
D:\Temp\DateStringFiles
#>

($date     = (get-date).AddDays(-1).ToString('yyyy-MM-dd'))
# Results
<#
2021-02-16
#>

Get-ChildItem -Path $basepath | 
Format-Table -AutoSize
# Results
<#
    Directory: D:\Temp\DateStringFiles


Mode          LastWriteTime Length Name                   
----          ------------- ------ ----                   
-a----  17-Feb-21     09:07      0 File2021-02-1617821.txt
-a----  17-Feb-21     09:07      0 File2021-02-1617822.txt
-a----  17-Feb-21     09:07      0 File2021-02-1717821.txt
#>


(
$test     = Get-ChildItem -Path $basepath | 
            Where-Object -Property FullName -Match $Date | 
            Format-Table -AutoSize

)
# Results
<#
    Directory: D:\Temp\DateStringFiles


Mode          LastWriteTime Length Name                   
----          ------------- ------ ----                   
-a----  17-Feb-21     09:07      0 File2021-02-1617821.txt
-a----  17-Feb-21     09:07      0 File2021-02-1617822.txt
#>

(
$last     = Get-ChildItem -Path $basepath | 
            Where-Object -Property FullName -Match $Date | 
            Select-Object -First 1 | 
            Format-Table -AutoSize
)
# Results
<#
    Directory: D:\Temp\DateStringFiles


Mode          LastWriteTime Length Name                   
----          ------------- ------ ----                   
-a----  17-Feb-21     09:07      0 File2021-02-1617821.txt
#>

【讨论】:

  • 感谢您的代码帮助我解决了这个问题,我的错误是我在 $test 变量中写了“匹配”而不是“匹配”。现在它工作得很好:)
  • 不用担心,很高兴它有帮助。保重,注意安全。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
相关资源
最近更新 更多