这是我实际批处理文件的简单得多的实现,但它们的目的是说明我的问题......
我有一个批处理文件,b.cmd,它只是回显输入参数:
REM - *** B.CMD
@echo off
echo %1
echo %~1
我有另一个批处理文件 a.cmd 启动 b.cmd:
REM - *** A.CMD
@echo off
set Location=C:UsersyogiAppDataLocalTemptest
REM - This location could contain spaces, hence on the next line
REM - I am surrounding %Location%b.cmd with QUOTEs.
start "" "%Location%b.cmd" "Input Argument 1"
如果我执行 a.cmd,则会出现错误:
'C:UsersyogiAppDataLocalTemptestb.cmd" "Input' is not recognized as an internal or external command,
operable program or batch file.
但是,如果我从 a.cmd 中删除 %Location%\b.cmd 周围的引号,我会得到这个(正如我预期的那样(:
"Input Argument 1"
Input Argument 1
我做错了什么?我需要 %Location%\b.cmd 周围的引号以及输入参数,因为它们都可以包含空格。
编辑
这是 a.cmd 的输出。Echo 已打开,b.cmd 被称为 NOT,周围没有引号:
C:UsersyogiAppDataLocalTemptest>a.cmd
C:UsersyogiAppDataLocalTemptest>set Location=C:UsersyogiAppDataLocalTemptest
C:UsersyogiAppDataLocalTemptest>start "" C:UsersyogiAppDataLocalTemptestb.cmd "Input Argument 1"
C:UsersyogiAppDataLocalTemptest>
以下是 b.cmd 的输出:
C:UsersyogiAppDataLocalTemptest>echo "Input Argument 1"
"Input Argument 1"
C:UsersyogiAppDataLocalTemptest>echo Input Argument 1
Input Argument 1
C:UsersyogiAppDataLocalTemptest>
这是 a.cmd 的输出。Echo 已打开,b.cmd 称为 AROUND,周围带有引号:
C:UsersyogiAppDataLocalTemptest>a.cmd
C:UsersyogiAppDataLocalTemptest>set Location=C:UsersyogiAppDataLocalTemptest
C:UsersyogiAppDataLocalTemptest>start "" "C:UsersyogiAppDataLocalTemptestb.cmd" "Input Argument 1"
C:UsersyogiAppDataLocalTemptest>
以下是 b.cmd 的输出:
'C:UsersyogiAppDataLocalTemptestb.cmd" "Input' is not recognized as an internal or external command,
operable program or batch file.
C:UsersyogiAppDataLocalTemptest>
这对我有用。
start cmd /C ""%Location%b.bat" "Input Argument 1""