【发布时间】:2021-10-09 00:50:12
【问题描述】:
我需要在目录中的一些 .txt 文件上运行可执行文件。可执行文件只需要文件名的一部分。
例如,如果FileName= "Hello_World.txt",则可执行文件仅在FileName= "Hello" 时有效。
到目前为止,我有代码可以在每个文件中循环执行可执行文件,但问题是它使用了文件的完整名称。
h $magick = 'path\program.exe'
$path = 'path'
foreach ($file in Get-ChildItem -Path $path -File -Filter "*.txt")
{
& $magick "$($file.FullName)" -negate
"$path\test_$($file.Name)"
关于如何仅选择名称的第一部分的任何想法? 实际文件名为:
J=[0.0, 0.0, 0.0]_spins_00.txt
J=[0.0, 0.0, 0.0]_spins_01.txt
要使用的部分是:J=[0.0, 0.0, 0.0]
关于如何仅选择名称的第一部分的任何想法?计算字符串可以工作(在本例中是前 17 个字符串)。
【问题讨论】:
-
您要查找的文件的分隔符始终为
_,或者文件也可以有其他分隔符(如-等)?另外请注意,$file.FullName是文件的绝对路径而不是文件名。 -
一方面,如果你的文件名有方括号,你应该在 Get-ChildItem 上使用
-LiteralPath。您可以像这样拆分文件名:($file,BaseName -split '_')[0]以获取下划线左侧的部分。
标签: string powershell