2010-10-16 26 views
0

我想從一個位置複製安裝文件,其中的文件夾名稱修改爲每個版本號如何啓動一個exe具有可變路徑,特殊字符和arguements

This works for defining the path where the last folder name changes 

import glob 
import os 
dirname = "z:\\zzinstall\\*.install" 
filespec = "setup.exe" 
print glob.glob (os.path.join (dirname, filespec)) 
# the print is how I'm verifying the path is correct 
['z:\\zzinstall\\35115.install\\setup.exe' 

我的問題一個是,我不能讓setup.exe啓動由於我需要啓動與SETUP.EXE需要

的參數,例如

setup.exe /S /z" 

還有許多其他的論據日需要通過雙引號,斜線和空格來傳遞。由於提供的文檔不一致,我必須通過反覆試驗進行測試。甚至有一些實例表明我需要在切換後使用「」!

那麼我該如何做到這一點?

理想我想通過entrire路徑,包括我需要glob的文件或

我想聲明與水珠作爲變量的路徑的結果,然後用SETUP.EXE串聯和爭論。這沒有奏效,錯誤列表不能與字符串結合返回。 基本上所有的工作,到目前爲止,我失敗了,因爲我無法處理變量的文件名和爭論中的空白和特殊字符的淫穢數量。

以下鏈接不包含一個明確的答案對我的具體問題相關howevers link text

下面提供不回答這個問題的答案,也沒有我所提供的鏈接,這就是爲什麼我問這個問題, 。如果我不理解,我會重新措辭。

我有一個需要隨機複製的文件。該文件被預先設置了唯一的,不可預測的數字,例如,內部編號。注意這是一個Windows系統。 對於這個例子,我會引用相同的文件夾/文件結構。

構建服務器隨時在4小時範圍內創建構建。生成服務器文件夾的路徑是Z:\ data \ builds * .install \ setup.exe

請注意路徑中的通配符。這意味着文件夾名稱前面加上了一個隨機(是,隨機)8位數字串然後是一個點。然後「安裝」。所以,一次的路徑可能是Z:\ data \ builds \ 12345678.install \ setup.exe,或者它可能是Z:\ data \ builds \ 66666666.install \ setup.exe這是一個,這個問題的主要部分。請注意,我沒有設計這個構建編號系統。作爲一名QA工程師,我從未見過這樣的事情。 所以要處理第一個問題,我打算使用glob。

import glob 
import os 
dirname = "Z:\\data\\builds\\*.install" 
filespec = "setup.exe" 
instlpath = glob.glob (os.path.join (dirname, filespec)) 
print instlpath # this is the test,printsthe accurate path to launch an install, problem #is I have to add arguements 

好吧,所以我想我可以使用我定義爲instlpath的路徑,concatnenate它並執行。

當嘗試使用prinnt測試

打印instlpath + 「/ S/Z」]

我得到 ['Z:\建立\安裝\ 12343333.install \ setup中。[/ S/z']

我需要 Z:\ builds \ install \ 12343333.install \ setup.exe/S/z「#yes,我需要whitespace作爲#well和amy也需要AZ「」

爲什麼都叫做SETUP.EXE,而不是唯一命名的嗎?不該死的想法!

謝謝了安裝的,

Surfdork

+0

看到,如果你確實需要的命令作爲一個字符串,怎麼樣'instlpath [0] + '/ S/Z 「」'?或者,使其更加複雜:'instlpath [0] + r'/ v「ISSCRIPTCMDLINE = \」 \「」'''。 – 2010-10-17 12:12:59

回答

0

您鏈接到確實含有相關的問題一個相對明確的答案給你的問題:

import subprocess 
subprocess.call(['z:/zzinstall/35115.install/setup.exe', '/S', '/z', '']) 

因此,您不需要連接setup.exe及其參數的路徑。您在列表中指定的參數直接傳遞給程序,而不是由shell處理。對於一個空字符串,它將在shell命令中「」,使用空的python字符串。

http://docs.python.org/library/subprocess.html#subprocess.call

+0

進口水珠 進口OS 進口子 目錄名稱= 「C:\\ sikuli \\ * SRinstall」 文件規範=的 「Setup.exe」 instlpath = glob.glob(os.path.join(目錄名,文件規範)) subprocess.call(instlpath [0] +'/ S/z'') – surfdork 2010-10-18 03:40:06