Power shell包含或获取特定的扩展文件

时间:2015-02-02 22:11:01

标签: powershell command-line

我有这个代码,查看目录中的所有文件并将其处理为exe。那里有一堆文件和不同的文件类型/扩展名。 我需要做的只是从目录中获取.txt文件,只有.txt文件将在.exe中处理。这可能吗?什么是我的问题的最佳解决方案?排除其他文件扩展名?因为我需要在目录中获得2-3个文件扩展名,而.txt就是其中之一。提前致谢。我被困在这里。

$Allfiles = Get-ChildItem "C:\SCRIPTS\tester\TESTALL\" -Recurse | Where {!$_.PSIsContainer -and ($_.CreationTime -gt $oldday) -and !$_.FullName.StartsWith('C:\SCRIPTS\tester\TESTALL\excludethisfolder\') } | Select-Object FullName


foreach ($file in $Allfiles) #check for each file in variable $Allfiles)
        {
           $file1 = $file.Fullname
           $foldername = Get-ChildItem -Path $file.FullName
           $input = $foldername.DirectoryName
           $Mothername = Get-Item -Path $input
           $output = $Mothername.Parent.Fullname
           $output = "$output\sc"
           Write-Host "The Filename: $file1"
           Write-Host "The FolderName: $input"
           Write-Host "$output"
           Write-Host "$Excludefolder"
           $argument = "$input $output $input"
           Start-Process -FilePath "C:\SCRIPTS\process.exe" -ArgumentList $argument #execute the process
        }
        Clear-variable -Name Allfiles

我已经尝试了一些其他脚本,不包括或包含txtfile但是它不能正常工作

我试过这个,是的,它对我有用,但它只是在输出中排除了.txt,但在FOREACH的过程中没有。

$Allfiles = Get-ChildItem "C:\SCRIPTS\tester\TESTALL\" -Recurse -exclude "*.txt"| Where {!$_.PSIsContainer -and ($_.CreationTime -gt $oldday) -and !$_.FullName.StartsWith('C:\SCRIPTS\tester\TESTALL\excludethisfolder\') } | Select-Object FullName

我真的很困惑这个,我已经尝试过包含/排除功能,但它不起作用。

1 个答案:

答案 0 :(得分:1)

我不确定你在foreach中获取额外文件的位置。尝试使用以下内容替换您的foreach,看看它是否仍然存在。我注释掉了可执行文件并简单地回显了$ argument变量,但它似乎与你要求的匹配。

foreach ($file in $Allfiles) #check for each file in variable $Allfiles
        {
           $file1 = $file.Fullname
           $input = Split-Path $file -Parent
           $output = $(Split-Path $input -Parent) + "\sc"
           Write-Host "The Filename: $file1"
           Write-Host "The FolderName: $input"
           Write-Host "$output"
           $argument = "$input $output $input"
           #Start-Process -FilePath "C:\SCRIPTS\process.exe" -ArgumentList
           $argument #execute the process
    }