【发布时间】:2020-01-31 20:35:46
【问题描述】:
由于某种原因,该批次直到批次结束时才运行 MAXL。我试图在程序开始时输出一个日志文件,运行 MAXL,然后告诉我文件何时完成。
REM Variables 1-9 assigned SET $1=variable1
CALL :SUB_A
CALL :SUB_B
CALL :SUB_C
GOTO :EOF
:SUB_A
ECHO STARTING Rebuild_TEST - Started at %time% on %date% > D:\Logs\Rebuild_TEST_Start.log
EXIT /B
:SUB_C
ECHO ENDING Rebuild_TEST - Started at %time% on %date% > D:\Logs\Rebuild_TEST_END.log
EXIT /B
:SUB_B
ECHO STARTING REBUILD
START "REBUILD" /W /B D:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\startMaxl.bat Rebuild_TEST.msh %$1% %$2% %$3% %$4% %$5% %$6% %$7% %$8% %$9%
ECHO ENDING REBUILD
EXIT /B
:EOF
我看到的是脚本通过 Subs A-C 然后执行 MAXL。我期待 Sub A 执行,Sub B 执行 - 启动 MAXL,然后运行 SUB_C。
我做错了什么? 我包含 /W 等待,/B 在当前窗口中运行文件,所以我不必干预
如果我使用 START "REBUILD" /W CMD /c 运行它,也许效果会更好?
【问题讨论】:
-
使用关键字
call调用“startMaxl.bat”,而不是start。如果您想在运行时将标题栏设置为“REBUILD”,请使用title命令。然后将其设置回您喜欢的任何内容(通常是 %COMSPEC% 或“命令提示符”)。 -
如果我使用
callstartMAXL.bat 将不会运行。变量 $9 有一个 % 符号,如果我使用 call @Señor CMasMas,它就会被删除。 -
我不敢相信我错过了!我猜滚动条是你的朋友。 $x 是 linux/bash 语法。 cmd.exe 不明白。对于 cmd.exe,您的参数用单个“%”引用。像这样 %1 %2 %3,而不是 %$1%..
标签: batch-file cmd subroutine