0

私は、zip から csv を抽出し、OS->lat/lon を変換し、コンテンツを DB に確実に詰め込み、プロセス全体の統計を含む配布リストを電子メールで送信するという、かなりの作業を行う PowerShell スクリプトを構築しています。

これでほとんどが完了しましたが、全体をもう少し移植しやすくするために、バッチ ファイルからの 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

私のスクリプトでは、2 つのパス パラメータ -i/-o を次のような変数に置き換えたいと思います。

c:\python27\python.exe D:\PythonPPC\subs.py -i $inputPathsubs_export.csv -o $outputPathsubs_export_lat_lon.csv

スタックや他のいくつかの場所で説明されている &$exe メソッドを試したので、このコマンドを呼び出す方法について何か考えがある人はいますか?

CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

どんな助けでも大歓迎です。

4

2 に答える 2

3

Join-Pathパスの構築にはコマンドレットを使用することをお勧めします。これにより、先頭/末尾のパスセパレーターを追跡するという頭痛の種がなくなり/\.

$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" ...
于 2013-07-02T10:49:50.217 に答える
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

ピアレビューが必要だっただけだと思います...

于 2013-07-02T09:30:23.950 に答える