如何使用引号将bat文件打开Excel文件?

时间:2015-09-17 13:59:24

标签: windows batch-file

  • Excel已安装在C:\Program Files\Microsoft Office 15\root\office15\EXCEL.EXE
  • 文件所在的文件夹C:\Heffalump files
  • 示例文件的名称为Auto the heff.xlsx

一直在玩一个bat文件来运行那个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 个答案:

答案 0 :(得分:4)

您需要将整个参数括在引号中,而不仅仅是部分引号。您的第二个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 :(得分:3)

每当您将变量设置为字符串时,通常最好引用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安装到该文件夹​​,否则Office值通常位于C:\Program Files (x86)\Microsoft Office\Office15或类似位置?无论如何,正如Mahran暗示的那样,您实际上并不需要指定excel.exe的完整路径。如果Windows具有与Excel关联的.xlsx文件,则可以

start "" "%ScheduledExcelFilePath%"

call "%ScheduledExcelFilePath%"

或者最简单的

"%ScheduledExcelFilePath%"

答案 2 :(得分:0)

只需在你的bat文件上写下这段代码

call C:\Heffalump\heff.xlsx