我想做这样的事:
cmd /c "set ""Path=V:\;%Path%"" & ECHO. %Path% & PAUSE"但是有一个问题:命令行窗口只出现一会儿,然后消失。我创建了一个测试.bat (比如echo.1: %1和2,3.)看看它的行为.
0: "V:\test.bat"
1: /c
2: "set ""Path=V:\;
3:
(4-9 the same)当我用例如5替换%时,第二个参数看起来像"set ""Path=V:\;5Path5"" & ECHO. 5Path5 & PAUSE",但这不是我想要的。我认为,在这个shell命令中解析%Path%可能有问题。
我试过了:
cmd /c "set ""Path=V:\;%%Path%%"" & ECHO. %%Path%% & PAUSE"
cmd /c "set ""Path=V:\;%%%Path%%%"" & ECHO. %%%Path%%% & PAUSE"
cmd /c "set ""Path=V:\;%%%%Path%%%%"" & ECHO. %%%%Path%%%% & PAUSE"
cmd /c "set ""Path=V:\;%%%%%Path%%%%%"" & ECHO. %%Path%%%%% & PAUSE"
cmd /c "set ""Path=V:\;%%%%%%%%Path%%%%%%%%"" & ECHO. %%%%%%%%Path%%%%%%%% & PAUSE"
cmd /c "set ""Path=V:\;^%Path^%"" &ECHO.^%Path^%&PAUSE"
cmd /c "set ""Path=V:\;^%%Path^%%"" &ECHO.^%Path^%&PAUSE"
cmd /c "set ""Path=V:\;\%Path\%"" &ECHO.\%Path\%&PAUSE"我将在下一次测试中编辑文章.
编辑:我只是注意到我甚至不能简单地使用:cmd /c "echo %PATH% & PAUSE"
发布于 2016-08-22 20:05:56
我找到解决办法了。我需要的是:
cmd /c "set ""Path=V:\;%Path:~0%"" &ECHO.%Path:~0%&PAUSE"它看起来像是用这个env变量内容代替%PATH% (用分号来代替路径),甚至在Run (Win+R)、CMD (.exe)、ShellExec (wscript/winapi)中也是如此。因此,不能将其用作快捷方式中的参数(我需要)。
发布于 2016-08-22 19:03:51
这似乎不起作用,因为xx是在cmd启动之前计算的。
cmd /c "set xx=yyyyyy & echo %xx% & PAUSE"这证明了它是有效的,变量是正确设置的:
cmd /c "set xx=yyyyyy & set xx & PAUSE"产出:
xx=yyyyyy逃避%的其他方式
cmd /c "set xx=yyyyyy & ECHOxx.bat & PAUSE"(ECHOxx.bat是一个执行echo %xx%的脚本)
输出
yyyyyy在这条路上,当你注意到自己的时候,它会稍微复杂一些,但它也能正常工作:
cmd /c "set PATH=%CD%\subdir;"%PATH%" & echoxx.bat"它起作用了:echoxx.bat已被移动到subdir目录中,并已找到。
https://stackoverflow.com/questions/39086903
复制相似问题