我有这个代码,查看目录中的所有文件并将其处理为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
我真的很困惑这个,我已经尝试过包含/排除功能,但它不起作用。
答案 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
}