2011-07-05 33 views
1

我有這樣一段代碼是否存在一個或多個文件,基本上檢查。它在我搜索一個文件時起作用,但當我嘗試搜索更多文件時它不起作用。我試圖定義一個數組,它接收一個要查找的文件路徑的字符串,然後檢查它的存在。但我注意到,因爲路徑中有一個空間,它不會工作。我嘗試了所有的組合,我可以簡單的引號,雙引號,轉義引號,沒什麼......氣餒處理空格路徑字符串使用PowerShell

我不想創建一個特定的功能,只是爲了讓事情的工作,保持簡單。能否請你幫忙 ?編輯:爲了使腳本工作,添加:$ LogSb = new-object System.Text.StringBuilder 並且您可能需要添加一些輸出,因爲默認情況下,所有內容都默默進入「日誌」字符串生成器。

##Checkink files containing my functions 
# 
$Fonctions = "C:\Program Files\scheduler\jobs\SuivideProd\OLAP\PlusProchesVoisins.ps1", "C:\Program Files\scheduler\jobs\SuivideProd\OLAP\OrdreProcess.ps1" 
#Tried something like this before, same error : 
#$Fonctions = @() 
#$Fonctions += "C:\'Program Files'\scheduler\jobs\SuivideProd\OLAP\PlusProchesVoisins.ps1" 
#$Fonctions += "C:\'Program Files'\scheduler\jobs\SuivideProd\OLAP\OrdreProcess.ps1" 
foreach ($fonc in $Fonctions) { 
    if ((Test-Path $fonc) -eq $True) { 
    [void]$LogSb.append("`n").appendline($("Le fichier contenant la fonction $(split-path $fonc -Leaf) a été trouvé.")) 
    #dot source the file if existing 
    . $Fonctions 
    } else { 
    [void]$LogSb.append("`n").appendline($("Le fichier contenant la fonction $fonc n'a pas été trouvé.")) 
    throw ("Le fichier contenant la fonction $(split-path $fonc -Leaf) n'a pas été trouvé") 
    } 
} 
+1

我想我發現了你的問題,但在未來,當你的問題涉及到一個錯誤,你應該告訴我們是什麼錯誤。 –

+0

明白了,好的。謝謝。 OMG! –

回答

2

你的第一種定義數組的方法很好。你的第二個方法(使用@()+=)不需要' S周圍Program Files(額外的撇號實際上使路徑不正確)。

通過閱讀後,我認爲你的問題是你是點源數組而不是一個單獨的文件。你在做. $Fonctions當你大概的意思做. $fonc,這是foreach變量保存一個文件路徑。

+0

OMG!我花了兩個小時就這樣...因爲我是誘的錯誤及只顯示其$ _。消息,我沒注意確切的錯誤,並認爲這是因爲陣列的建設。無論如何非常感謝你。 –

相關問題