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%
答案 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