2011-03-05 135 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)}}

請注意,如果沒有' - ' $ _。命名

相關問題