【问题标题】:How to get specific files using Get-ChildItem如何使用 Get-ChildItem 获取特定文件
【发布时间】:2018-02-20 16:41:44
【问题描述】:

我正在尝试获取文件名中包含今天日期的所有文件。但是,当我运行它时,我收到以下错误:

#Share location
$source = "U:\Data\*"
#Sharepoint file location
$prefix = "file_name_"

#Date Info
$date = get-date -uformat "%Y-%m-%d" | Out-String

$file = $prefix + $date 

Get-ChildItem -File -path $source -Filter $file*

Get-ChildItem : 路径中的非法字符。在行:2 字符:1 + Get-ChildItem -File -path $source -Filter $file*

任何帮助将不胜感激。我在过滤器中使用$file*,因为文件扩展名可能不同。

【问题讨论】:

    标签: powershell get-childitem


    【解决方案1】:

    您的问题是使用| Out-String,这不仅在您的情况下是不必要的,而且附加了一个尾随换行符,这是问题的原因。

    只使用:

    $date = get-date -uformat "%Y-%m-%d"  # Do NOT use ... | Out-String
    

    get-date -uformat "%Y-%m-%d" 直接返回一个[string]


    可选的故障排除提示

    验证get-date -uformat "%Y-%m-%d" 是否输出[string] 实例:

    PS> (get-date -uformat "%Y-%m-%d").GetType().FullName
    System.String
    

    验证... | Out-String 是否添加了换行符:

    PS> (get-date -uformat "%Y-%m-%d" | Out-String).EndsWith("`n")
    True
    

    【讨论】:

    • @ZackV 你能用示例文件名更新问题吗?
    • 我的代码现在使用 "$file*" 而不是 $file* (包括之前的建议)。谢谢!
    • @ZackV:很高兴听到它,但这很奇怪:虽然"$file*"通常更可取的 形式,$file* 应该同样工作 在这种情况下。您确定 "..." 有所作为吗?你能把$file的展开值贴在这里,让我看看吗?
    【解决方案2】:

    试试这个:

    #Share location
     $source = "U:\Data\*"
    #Sharepoint file location
     $prefix = "file_name_"
    
    #Date Info
     $date = get-date -uformat "%Y-%m-%d" | Out-String
    
     $file = $prefix + $date + ".*"
    
     $webclient = New-Object System.Net.WebClient 
     $webclient.UseDefaultCredentials = $true 
    
     Get-ChildItem -File -path $source -Filter $file
    

    按照您目前的方式,PowerShell 正在尝试将名为 $file* 的变量传递给 Get-ChildItem

    【讨论】:

    • 运行成功但是没有找到文件。我认为这是因为我没有在 $file 变量中明确列出文件扩展名。没有办法通配符吗?抓取任何计算 $file 中找到的文本的项目
    • .* 中删除. - 通配符通配符不是正则表达式
    • @MathiasR.Jessen 是正确的;此外,$file* 作为参数也可以正常工作(尽管"$file*" 可以说是更可取的),所以这不是问题;试试$file = 'foo'; Write-Output $file*
    • 我的代码现在使用 "$file*" 而不是 $file* (包括之前的建议)。谢谢!
    猜你喜欢
    • 2020-04-22
    • 2011-03-06
    • 1970-01-01
    • 2012-04-17
    • 2015-10-29
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多