我有一个如下所示的目录:
20171206PAFile.txt
20171206PBFile.txt
20171206PCFile.txt
20171106PAFile.txt
20171106PBFile.txt
20171006PAFile.txt
20171006PBFile.txt
等...
我想获取名称为20171006的文件,然后对这些文件执行某些操作,然后以迭代方式移动到名为20171106的下一组文件,依此类推。
并且在此过程中将日期部分存储在变量中。
$date = 20171106
有办法做到这一点吗?
[string]$FolderName = "C:\Users\Test\Desktop\TestDirectory"
$Item = Get-ChildItem *.txt -Path $FolderName|Sort CreationTime| select -First 1
$test = $Item.Name.Substring(0,8)
我将把这些文件移出这个目录,因为我处理它们,所以20171006文件将在第一次迭代后消失。然后是20171106文件等等。
答案 0 :(得分:2)
powerShell方法是按日期对文件进行分组。所以
编辑:凭借今天的知识和技能,这更容易:
> gci [0-9]*.txt | ? BaseName -match '^(\d{8})' | group {$matches[1]} |ft -auto
Count Name Group
----- ---- -----
2 20171006 {20171006PAFile.txt, 20171006PBFile.txt}
2 20171106 {20171106PAFile.txt, 20171106PBFile.txt}
3 20171206 {20171206PAFile.txt, 20171206PBFile.txt, 20171206PCFile.txt}
Get-ChildItem *.txt|
Where-Object {$_.Name -match '^\d{8}'}|
Select-Object *,@{Name='DT';Expression={$_.Name.Substring(0,8)}}|
Sort-Object DT|
Group-Object DT|Format-Table -auto
或者将别名作为一个衬垫相同:
gci *.txt|?{$_.Name -match '^\d{8}'}|select *,@{N='DT';E={$_.Name.Substring(0,8)}}|sort DT|Group DT|ft -auto
示例输出,接下来的步骤可能是迭代组并扩展到文件名。
Count Name Group
----- ---- -----
2 20171006 {@{PSPath=Microsoft.PowerShell.Core\FileSystem::X:\Test\20171006PBFile.txt; PSParent...
2 20171106 {@{PSPath=Microsoft.PowerShell.Core\FileSystem::X:\Test\20171106PAFile.txt; PSParent...
3 20171206 {@{PSPath=Microsoft.PowerShell.Core\FileSystem::X:\Test\20171206PCFile.txt; PSParent...
答案 1 :(得分:0)
您可以使用以下内容:
dir | findstr "20171106" | Foreach-object { $_ }
干杯,
答案 2 :(得分:0)
试试这个
$FileNames =@("20171106","20171006")
$Path = "C:\"
foreach($FileName in $FileNames){
$Files = Get-ChildItem -Path $Path -file -Recurse -Include $FileName*
foreach($File in $Files){
$File
}
}
或试试这个
$Files = @("win", "cmd") | foreach-object{ dir "C:\windows\system32" -Recurse -Include "$_*"} | ?{!$_.psiscontainer}
Foreach($File in $Files){
$File.FullName
}
答案 3 :(得分:0)
Get-ChildItem \folder\to\loop -Recurse -Include *.<filetype> | Foreach-Object{
# stuff to do
}