Batch file 我无法看到最后一条ECHO语句有什么原因吗?
请参阅所附代码。。出于某种原因,我无法理解为什么最后两条语句没有出现。我希望在这个问题上得到一些指导Batch file 我无法看到最后一条ECHO语句有什么原因吗?,batch-file,cmd,Batch File,Cmd,请参阅所附代码。。出于某种原因,我无法理解为什么最后两条语句没有出现。我希望在这个问题上得到一些指导 @ECHO off SET user=%1% SET password=%2% SET server=%3% ECHO Running MaintenanceToolsAPI.StartProcess FOR /F "tokens=1-8" %%a IN ('maintenance_tools -user %user% -password %password% -server %server%
@ECHO off
SET user=%1%
SET password=%2%
SET server=%3%
ECHO Running MaintenanceToolsAPI.StartProcess
FOR /F "tokens=1-8" %%a IN ('maintenance_tools -user %user% -password %password% -server %server% -startprocess DataWarehouseSync') DO (
IF "%%a %%b %%c %%d %%e %%f %%g"=="Process 'DataWarehouseSync' is being run with PID" (
SET PID=%%h
) ELSE (
EXIT /B 1
)
)
ECHO The PID is %PID%
ECHO We have reached the end
仅供参考,for中命令的预期结果为:
Running maintenance_tools.gsp
Connecting as [user] to URL [server]
Running process 'DataWarehouseSync'
Process 'DataWarehouseSync' is being run with PID 16727
done
给定(您的代码):
当处理行运行维护工具.gsp
时
%%a将成为运行中的
%%b将成为维护工具。gsp %%c、 .%g将为空,因此
“%%a%%b%%c%%d%%e%%f%%g”==“正在使用PID运行进程“DataWarehouseSync”
将false
,因此采用else
路径,进程完成
解决方案-强制PID
为空,然后如果任何一行与所需字符串匹配,PID
将成为某种东西,因此当的完成时,将定义PID
<代码>退出b 1
如果不是,则报告并继续
还要注意,参数引用(%0..%9)应该用作(例如)set var=%3
,或者最好是set“var=%3”
,而不是您所表达的%3%
。可能是因为exit/b1
语句。您可以在退出前再设置一个回显,以查看if是否到达那里。对于没有提供预期的输出表示歉意,但它应该通过if条件,而不是进入ELSE。在
if`行之前执行一个echo“%%a%%b%%c%%d%%e%%f%%g”。是您期望的输出吗?命令行参数被引用为%1
,%2
等。%1%
工作,因为解析器看到%1
,然后看到附加的%
,即“变量的开始”。由于没有找到“关闭”%
,解析器将忽略附加的%
。但是%1%
是一个错误的语法(尽管解析器“原谅了”)
....
SET server=%3
SET "PID="
ECHO Running MaintenanceToolsAPI.StartProcess
FOR /F "tokens=1-8" %%a IN ('maintenance_tools -user %user% -password %password% -server %server% -startprocess DataWarehouseSync') DO (
IF "%%a %%b %%c %%d %%e %%f %%g"=="Process 'DataWarehouseSync' is being run with PID" (
SET PID=%%h
)
)
IF NOT DEFINED PID EXIT /B 1
ECHO The PID is %PID%
...