2013-07-02 27 views
0

我構建了一個PowerShell腳本,它可以很好地從zip中提取csv,轉換OS-> lat/lon,將內容強健地填充到數據庫中,然後通過電子郵件發送整個流程的統計信息。從PowerShell v1.0調用具有動態參數的Python 12

現在大部分工作已經完成,但爲了使整個工作更加便於攜帶,我將輸入/工作/輸出文件夾的路徑作爲批處理文件調用PowerShell的參數。

這是所有的幻想,直到我需要調用python腳本來做經/緯度工作,因爲傳入可變參數路徑似乎不適用於任何排列/組合。

以下是.PS1腳本如果直接調用來自命令提示,並從.PS1文件中的作品內Python路徑的簡化版本(其中-i -o是輸入/輸出路徑參數) 。

c:\python27\python.exe D:\PythonPPC\subs.py -i D:\PPC\subs_export.csv -o D:\PPC\subs_export_lat_lon.csv 

在我的劇本,我想與變量類似,以取代這兩個路徑參數-i/-o:

​​3210

沒有人有我」如何調用該命令的任何想法已經試過堆棧和其他一些地方所描述的& $ exe文件的方法,但是這只是導致如下所示的錯誤:

CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 

任何幫助將不勝感激。

回答

0

從一個不同的方向攻擊問題和一個同事指出我自己的卑鄙愚蠢,似乎以下是對上述複雜問題的一個相當直接的解決方案。

$inputFilePath = $pathToWorkingFolder + $pathToExtractFolder + 'subs_export.csv' 
$outputFilePath = $pathToWorkingFolder + $pathToExtractFolder +'subs_export_lat_lon.csv'  
c:\python27\python.exe D:\PythonPPC\subs.py -i $inputFilePath -o $outputFilePath 

只是需要一些同行評審我猜...

+0

沒看劇本的情況下。但我可以看到的一個問題是'$ inputPathsubs_export.csv'將被視爲名稱爲「$ inputPathsubs_export.csv」的變量,它根本不存在。您可以添加一個反斜槓使其成爲'$ inputPath \ subs_export.csv'。 – Peter

+0

使用'Join-Path' cmdlet創建您的路徑。不要手動連接。 –

3

我建議使用Join-Path cmdlet的建設路徑。它可以幫助您避免跟蹤前導/尾隨路徑分隔符,並且還可以將/設置爲\

$workingFolder = 'C:\some/where\' 
$extractFolder = '\extract\folder' 
$infileName = '/subs_export.csv' 
$outfileName = '\subs_export_lat_lon.csv' 

$infile = Join-Path (Join-Path $workingFolder $extractFolder) $infileName 
$outfile = Join-Path (Join-Path $workingFolder $extractFolder) $outfileName 

結果:

PS C:\> $infile 
C:\some\where\extract\folder\subs_export.csv 
PS C:\> $outfile 
C:\some\where\extract\folder\subs_export_lat_lon.csv

如果你還是想簡單地連接字符串的路徑,你可以分開通過把大括號中的變量名尾隨字符串變量。在您的例子:

python.exe D:\PythonPPC\subs.py -i "${inputPath}subs_export.csv" ... 

python.exe D:\PythonPPC\subs.py -i "${rootFolder}${subFolder}subs_export.csv" ... 
+0

爲評論@Ansgar歡呼。腳本已經越來越亂,路徑連接在一起,所以我可以回去使用它。謝謝! – BizNuge

相關問題