我想调用另一个程序并在运行时返回,我可以使用这个
start /MIN "Updating Local Utilities" UPutils ^&^& exit
并且效果很好。
但我想将参数传递给已启动的实例。
这些方法不起作用:
rem pass along literal parameters
start /MIN "Updating Local Utilities" UPutils C:\source c:\Target ^&^& exit
rem pass along dynamic parameters
start /MIN "Updating Local Utilities" "UPutils %Source% %Target%" ^&^& exit
但这就是我想要的想法。
我的接收程序(UpUtils.bat)会简单地将它们用作 %1 和 %2 参数
Echo %1
Echo %2
谢谢
答案1
好的。有时你只是想完成它!
站在巨人的肩膀上(此处)......
大部分代码都是直接在此论坛中回答的问题的结果!感谢大家如此乐意地传授知识。
涉及三个文件。第一个批处理文件启动另一个批处理文件。第三个文件是传递的参数的存储位置。我仍然希望有一种方法可以更轻松地使用 START 命令传递参数,但有时...
PassArgs.bat --> RecArgs.bat 存储库.ARGS
以下是传球计划:
@echo off
echo ---- PassArgs.bat ----
Echo Arg1 > Repository.ARG
Echo Arg2 >> Repository.ARG
start "Passing Arguments" RecArgs ^&^& exit
((((echo Just waiting for...) & echo RecArgs ) & echo Oh look. It's done!.) & echo.)|MSG /time:5 *
echo That's All Folks!
echo.
以下是接收批处理程序:
@echo off
echo ---- RecArgs.bat ----
cd /d "%~dp0" && setlocal EnableDelayedExpansion
for /f ^tokens^=*delims^= %%i in ('type Repository.ARGS')do set /a "_c+=1+0" && <con: set "Arg!_c!=%%~i"
for /l %%l in (1 1 !_c!)do echo\Arg%%l=!Arg%%l!
%__AppDir__%timeout.exe -1 & endlocal & goto=:EOF
echo Arg1=%Arg1%
echo Arg2=%Arg2%
Echo I got them!
echo.
pause
最终结果是参数 Arg1 和 Arg2 传递给 STARTed 程序。
Arg1="Arg1"
Arg2="Arg2"
答案2
您无法将参数传递给已启动的程序实例,现在运行不同的start
语句将使用新参数创建该程序的新实例。据我所知,这几乎是不可能的,并且对于像 Batch 这样的语言来说,这简直是开发人员的噩梦。