当文件中存在静态字符串时,我需要执行一项活动
if ( Get-Content -Path C:\appoggio\*.TXT -filter {$_.Substring(250,5)} ) = '05032' {
Set-Location C:\appoggio\prova -WhatIf
Write-Warning 'ok'
}
文件
2401188832220240801083447050320240100750910000101002076 IT0000007994 251630830000 00000002401001652820240801 00000000000000000000000000000000000000 00 0000000000 9 05032 0139200170. 00000000
>
BATCH 2401188850220240801073602051230240100750980000101002076 IT0000006570 251765330000 00000002401001646020240801 000000000000000000000000000000000000001000000081fcc082 00 0000000000 9 05123 0085800050. 00000000
据推测,根据您的示例数据,您的
startIndex
调用中的 SubString
参数应该是 249
:
$sample = @'
2401188832220240801083447050320240100750910000101002076 IT0000007994 251630830000 00000002401001652820240801 00000000000000000000000000000000000000 00 0000000000 9 05032 0139200170. 00000000
>
BATCH 2401188850220240801073602051230240100750980000101002076 IT0000006570 251765330000 00000002401001646020240801 000000000000000000000000000000000000001000000081fcc082 00 0000000000 9 05123 0085800050. 00000000
'@
$sample.Substring(249, 5) # 05032
您还需要在
-Raw
调用中使用 Get-Content
来获取文件内容作为单个多行字符串而不是字符串数组。因此,总而言之,您可能寻找的条件应该是:
if ((Get-Content 'C:\appoggio\*.TXT' -Raw).Substring(249, 5) -eq '05032') {
Set-Location C:\appoggio\prova -WhatIf
Write-Warning 'ok'
}
您还应该考虑到这可以获取多个文件的内容,因为您使用的是通配符 (
*.txt
),因此在这种情况下这种情况可能会失败,如果您添加更多信息,可能有更好的方法来执行此操作你的问题。