2015-09-17 67 views
0
  • 的Excel安裝在C:\Program Files\Microsoft Office 15\root\office15\EXCEL.EXE
  • 文件夾中的文件是在C:\Heffalump files
  • 一個示例文件的名稱是Auto the heff.xlsx

已用bat文件玩弄以運行Excel文件,但不能得到它工作。在運行時,蝙蝠上面應該已經如何使蝙蝠文件用引號打開Excel文件?

"C:\Program Files\Microsoft Office 15\root\office15\EXCEL.EXE" "C:\Heffalump\Auto the heff.xlsx" 

"C:\MyAwesomeBat.bat" "Auto the heff.xlsx" 

但它保持了引號,因此得到所有搞砸。

cls 
@SET ScheduledExcel=true 
@SET ScheduledExcelFolder="C:\Heffalump files" 
@SET ScheduledExcelFilePath=%ScheduledExcelFolder%\%1 

"C:\Program Files\Microsoft Office 15\root\office15\EXCEL.EXE" %ScheduledExcelFilePath% 

回答

3

您需要附上en輪胎的爭論變成了引號,而不僅僅是它的一部分。您的第二條SET聲明包含對報價的引用;在追加%1後,您將在該值中引用一個報價。

下面應該工作:

CLS 
@SET ScheduledExcel=true 
@SET "ScheduledExcelFolder=C:\Heffalump files" 
@SET "ScheduledExcelFilePath=%ScheduledExcelFolder%\%~1" 

"C:\Program Files\Microsoft Office 15\root\office15\EXCEL.EXE" "%ScheduledExcelFilePath%" 

我用引號括起來的整個SET表達,這樣他們就不會成爲價值的一部分。

還請注意~%~1,如果有的話可以刪除周圍的引號。

1

無論您何時將變量設置爲字符串,通常都會引用set "variable=value"對。這種方式的價值不包含報價,但你也避免評估棘手的字符,如&。然後,您可以在需要時在檢索時明確引用。

此外,aschipfl正確地指出,您需要在%~1中包括一個代字號以從命令行參數中去除周圍的引號。

@echo off 
setlocal 

cls 
SET "ScheduledExcel=true" 
SET "ScheduledExcelFolder=C:\Heffalump files" 
SET "ScheduledExcelFilePath=%ScheduledExcelFolder%\%~1" 

"C:\Program Files\Microsoft Office 15\root\office15\EXCEL.EXE" "%ScheduledExcelFilePath%" 

對於它的價值,除非你故意安裝Office到該文件夾​​,是不是辦公室通常位於C:\Program Files (x86)\Microsoft Office\Office15或類似的?無論如何,正如Mahran暗示的那樣,你實際上並不需要指定excel.exe的完整路徑。如果Windows具有的.xlsx與Excel關聯,則文件,你可以

start "" "%ScheduledExcelFilePath%" 

call "%ScheduledExcelFilePath%" 

或者最簡單地

"%ScheduledExcelFilePath%" 
0

只需你bat文件編寫代碼

call C:\Heffalump\heff.xlsx