2011-03-05 121 views
8

好了,所以这里是我想要做的事: 我想打一个小的PowerShell脚本,需要我的音乐库中的每个文件,然后再执行的散列总和它并写入到像这样一个文件:切断字符串文本/后分隔符之前在PowerShell中

test.txt的; 131 136 80 89 119 17 60 123 210 121 188 42 136 200 131 198

现在,当我开始脚本时,首先需要将我的音乐库与已有的值进行比较,但为此我只想切断所有内容之后 ;因此,它可以比较文件名(或文件路径),文件名......但我怎么做到这一点,试图与 $名称= $名称-replace替换难倒“*”,“” 没有去...

试图过滤...不知道如何D:

我真的很感激帮助。

此外,如果你认为我期运用了错误的编码语言,告诉我,什么会更好,这只是我只用过C和PowerShell的

回答

32
$pos = $name.IndexOf(";") 
$leftPart = $name.Substring(0, $pos) 
$rightPart = $name.Substring($pos+1) 

内部,PowerShell使用String class

+0

很好看,答案已经在这里和它的作品就像一个魅力,非常感谢 – DemonWareXT 2011-03-05 12:30:54

+0

工作就像魅力。谢谢VVS – 2016-03-23 16:04:59

1

这样确实可以为分隔符之间的字符特定量的特定的分隔符。我有很多问题试图在每个循环中使用此位置,其中位置已更改,但分隔符相同。例如,我使用反斜杠作为分隔符,并且只想使用反斜杠右侧的所有内容。问题是,一旦定义了位置(从一开始就有71个字符),它将每次使用$ pos 71,而不管脚本中实际分隔符的位置。我发现使用定界符的另一种方法和.split打破东西然后用于分割变量来调用区段例如,第一部分是$变量[0],第二部分是$变量[1]。

2

您可以使用Split

$text = "test.txt ; 131 136 80 89 119 17 60 123 210 121 188 42 136 200 131 198" 
$separator = ";" # you can put many separator like this "; : ," 

$parts = $text.split($separator) 

echo $parts[0] # return test.txt 
echo $parts[1] # return the part after the separator 
4
$text = "test.txt ; 131 136 80 89 119 17 60 123 210 121 188 42 136 200 131 198" 

$text.split(';')[1].split(' ') 
0

我有一个完整的目录文件,包括一些被命名为发票无产品no.pdf,并希望通过产品没有排序这些,所以......

GET-childitem的* .pdf | sort-object -property @ {expression = {$ _。name.substring($ _。name.indexof(“ - ”)+ 1)}}

请注意,如果没有' - ' $ _。命名

相关问题