vb Shell怎么执行多条cmd命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb Shell怎么执行多条cmd命令相关的知识,希望对你有一定的参考价值。

我已经用了一次Shell执行cmd命令,我想就上一个cmd窗口继续执行命令,怎么办?
比如说:我想获得管理员权限,用Shell "cmd /c runas /user:administrator sfc"
这样还要输密码呀,再来个Shell执行cmd上次的命令就没有了。

你可以把多条命令写到一个批处理文件中,然后shell执行这个批处理文件即可 参考技术A

Shell 是有返回值的。你可以这样:

Private P As Double
 
Private Sub Command1_Click()
  P = Shell("cmd /k", vbNormalFocus)
End Sub
 
Private Sub Command2_Click()
  AppActivate P
  SendKeys "dir", True
  SendKeys "Enter", True
End Sub

看不明白再问。

本回答被提问者和网友采纳
参考技术B 用&&分隔开多条命令,VB6测试通过
Shell "cmd /c net view>d:\text1.txt && dir c:\>d:\text2.txt"
参考技术C

Shell 是有返回值的。你可以这样:


Private P As Double
Private Sub Command1_Click()
P = Shell("cmd /k", vbNormalFocus)
End Sub
Private Sub Command2_Click()
AppActivate P
SendKeys "dir", True
SendKeys "Enter", True
End Sub

dockerfile CMD执行多条命令且需要支持环境变量

现有环境变量
JAVA_OPTS=-Xms125m -Xmx256m -Dspring.profiles.active=test

CMD命令
CMD sleep 30 && java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar xxx.jar

这条语法是支持多CMD命令的.但是不支持环境变量.

运行后会执行
java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar xxx.jar

期望结果是
java -Xms125m -Xmx256m -Dspring.profiles.active=test -Djava.security.egd=file:/dev/./urandom -jar xxx.jar

问:
语句怎么写才能既支持'多CMD命令'又支持 环境变量呢?

运行时机不太一样。
RUN是在Build时运行的,先于CMD和ENTRYPOINT。Build完成了,RUN也运行完成后,再运行CMD或者ENTRYPOINT。
ENTRYPOINT和CMD的不同点在于执行docker run时参数传递方式,CMD指定的命令可以被docker run传递的命令覆盖,例如,如果用CMD指定:
...
CMD ["echo"]

然后运行
docker run CONTAINER_NAME echo foo

那么CMD里指定的echo会被新指定的echo覆盖,所以最终相当于运行echo foo,所以最终打印出的结果就是:
foo

而ENTRYPOINT会把容器名后面的所有内容都当成参数传递给其指定的命令(不会对命令覆盖),比如:
...
ENTRYPOINT ["echo"]

然后运行
docker run CONTAINER_NAME echo foo

则CONTAINER_NAME后面的echo foo都作为参数传递给ENTRYPOING里指定的echo命令了,所以相当于执行了
echo "echo foo"

最终打印出的结果就是:
echo foo

另外,在Dockerfile中,ENTRYPOINT指定的参数比运行docker run时指定的参数更靠前,比如:
...
ENTRYPOINT ["echo", "foo"]

执行
docker run CONTAINER_NAME bar

相当于执行了:
echo foo bar

打印出的结果就是:
foo bar

Dockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效。
执行docker run命令时,也可以添加-entrypoint参数,会把指定的参数继续传递给ENTRYPOINT,例如:
...
ENTRYPOINT ["echo","foo"]

然后执行:
docker run CONTAINER_NAME bar #注意没有echo

那么,就相当于执行了echo foo bar,最终结果就是
foo bar
参考技术A 怎么看着不像微软系统上的CMD命令?
您确定要微软系统的CMD命令?是的话,那么就是如下调用变量
set JAVA_OPTS=-Xms125m -Xmx256m -Dspring.profiles.active=test
java %JAVA_OPTS% -Djava.security.egd=file:/dev/./urandom -jar xxx.jar

以上是关于vb Shell怎么执行多条cmd命令的主要内容,如果未能解决你的问题,请参考以下文章

vb 下用shell实现 cmd 执行2个命令

VB6如何运行多行CMD命令?

用Javascript调用cmd并执行命令

bat 文件多条命令的执行

vb执行DOS命令并返回结果

dockerfile CMD执行多条命令且需要支持环境变量