Powershell脚本从文件夹列表中提取文件名中的信息

时间:2014-02-14 20:45:19

标签: powershell

我有一个文件夹列表,每个文件夹都采用以下格式:custID_invID_prodID。对于每个文件,我需要根据'_'将其分成几个部分。目前我有这个代码

$files = Get-ChildItem test *.txt
$Part = $files.Split(';')[$($files.Split('_').Count-1)]
Write-Host  "${Part}"

问题是$files似乎是所有文件的列表,我需要它自己运行每个文件。任何人都可以提供一些关于如何为整个文件夹执行此操作的指示吗?

2 个答案:

答案 0 :(得分:1)

“问题是看起来$ files是所有文件的列表,我需要它自己运行每个文件。”

这是正确的,在文件夹上运行get-childitem将为您提供所有文件(和子文件夹)的列表。为了逐个浏览它们,你需要一个循环:

$file = @()
$files = Get-ChildItem Test *.txt 
foreach($f in $files)
{
    $file += ([String]$f).Split("_")
    $count = ([String]$f).Split("_") | Measure-Object | select count
}
if($count.count -eq 3) {
    for($i=2; $i -lt $file.length; $i+=3) {
        $file[$i] = $file[$i].trimend(".txt")
    }
} 

答案 1 :(得分:0)

我能够通过使用此代码解决此问题:

$Part = $file.name.Split('_')[$($file.name.Split('_').Count-1)]
Write-Host "${Part}"