簡體   English   中英

當命令帶有雙引號時如何從python運行Windows命令行命令

[英]How to run a windows command line command from python when the command has double quotes

以下是我嘗試運行的代碼

device_editor_path = os.path.join(syntax_checker_path,'DeviceEditor.jar')
output_path = os.path.join(reviewdocs_path,'syntaxchecker_orig_output.txt')
output_path = '"%s"' % output_path # Need to do this because in case there is a space in output_path
# run syntax checker
cmd = 'java -jar' + ' ' + device_editor_path + ' ' + content_data_path + ' ' + event_source_name
if version == 'v2':
    cmd = cmd + ' ' + '-v2'
final_cmd = cmd + ' ' + '>' + ' ' + output_path
# final_cmd_test = r'java -jar C:\TOOLS_UI\syntaxchecker\DeviceEditor.jar C:\Users\patela28\Perforce\content-dev\dev\envision\content\content-data\ symantecav -v2 > "C:\Users\patela28\Desktop\jira\ESU#105\Sprint_27\SMC-112\ReviewDocs&Checklist\syntaxchecker_orig_output.txt"'
print(final_cmd)
status = os.system(final_cmd)

print(final_cmd)的輸出是

java -jar C:\\ TOOLS_UI \\ syntaxchecker \\ DeviceEditor.jar C:\\ Users \\ patela28 \\ Perforce \\ content-dev \\ dev \\ envision \\ content \\ content-data \\ symantecav -v2>“ C:\\ Users \\ patela28 \\ Desktop \\ JIRA \\ ESU#105 \\ Sprint_27 \\ SMC-112 \\ ReviewDocs&清單\\ syntaxchecker_orig_output.txt”

該命令可以運行,但是整個輸出顯示在命令行上,並且不會重定向到語法checker_orig_output.txt。

當我在命令行上復制粘貼上面相同的命令時,它可以正常工作,並且在該位置得到了一個語法checker_orig_output.txt文件。

無法弄清楚為什么會這樣。

您必須啟動命令處理器。 Java不會為您解析命令行。 以下應該工作:

device_editor_path = os.path.join(syntax_checker_path,'DeviceEditor.jar')
output_path = os.path.join(reviewdocs_path,'syntaxchecker_orig_output.txt')
output_path = '"%s"' % output_path # Need to do this because in case there is a space in output_path
# run syntax checker
cmd = 'cmd.exe /c java -jar' + ' ' + device_editor_path + ' ' + content_data_path + ' ' + event_source_name
if version == 'v2':
    cmd = cmd + ' ' + '-v2'
final_cmd = cmd + ' ' + '>' + ' ' + output_path
# final_cmd_test = r'java -jar C:\TOOLS_UI\syntaxchecker\DeviceEditor.jar C:\Users\patela28\Perforce\content-dev\dev\envision\content\content-data\ symantecav -v2 > "C:\Users\patela28\Desktop\jira\ESU#105\Sprint_27\SMC-112\ReviewDocs&Checklist\syntaxchecker_orig_output.txt"'
print(final_cmd)
status = os.system(final_cmd)

不知道原因,只是改變

final_cmd = cmd +''+'>'+''+ output_path

final_cmd = cmd +''+'>'+ output_path

為我工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM