我一直依赖这两个命令:
wmic memorychip get capacity // Outputs how much RAM there is (in a convoluted manner).
wmic diskdrive get Status,Model // Checks whether the HDDs/SSDs on the system are (supposedly) still "OK" and working.
Run Code Online (Sandbox Code Playgroud)
今天随便输入了“wmic”,看看能不能得到上述命令的JSON输出。它以红色文本打印的第一件事是:
WMIC is deprecated.
Run Code Online (Sandbox Code Playgroud)
我对此感到非常震惊。已弃用?好吧……那我绝对不应该依赖它。那么这两个命令的“现代替代方案”是什么?他们甚至存在吗?为什么他们只是告诉我们它已被“弃用”,而进一步的信息为零?
我正在尝试在 R 中设置一个异步 system() 调用。为了使它有用,用户需要一种方法来检查进程是否已经结束。问题是如何测试?在如何运行可执行文件,然后在 Windows 中使用 R 杀死或终止相同的进程时,建议似乎是在 system() 调用之前和之后捕获所有 pid 以获取刚刚启动的进程的 pid (然后可以用来测试它是否已经结束),但这似乎是一种容易出错的方法,而且它依赖于操作系统......
是否有其他方法可以解决此问题(不必涉及 pid)
编辑:这应该用于当前场景:
我正在开发一个 Shiny GUI,它可以处理在 Java 中实现的可能很长时间运行的计算。计算是分批完成的,在这些运行期间,即使 R 空闲,GUI 也被锁定,无法与 R 服务器交互,因为它正在等待 Java 进程完成。我想要一种方法来启动 Java 进程而不是等待它完成(使用 wait=FALSE 参数),而是有一种检查它是否已完成的故障安全方法,因此可以相应地更新 GUI...
我正在尝试使用wmic sart一个VLC实例我这样做主要是因为我想捕获创建过程的pid
我知道下面的命令在命令行中工作正常:
C:\PROGRA~1\VideoLAN\VLC_117\vlc.exe rtsp://abcd --sout="#duplicate{dst=display, dst={std{access=file, mux=ps, dst='vlc_117/video.mpg'}}} --rtsp-caching=120 --no-video-title-show"
Run Code Online (Sandbox Code Playgroud)
(其中rtsp:// abcd可以是用于此示例的任何输入文件)
试图通过wmic运行它,以各种不同的尝试作为转义序列(其中下面是一个):
wmic process create 'C:\PROGRA~1\VideoLAN\VLC_117\vlc.exe rtsp://abcd --sout="#duplicate{dst=display, dst={std{access=file, mux=ps, dst='vlc_117/video.mpg'}}} --rtsp-caching=120 --no-video-title-show" '
Run Code Online (Sandbox Code Playgroud)
可靠地给了我同样的错误:
Invalid format.
Hint: <assignlist> = <propertyname>=<propertyvalue> [, <assignlist>].
Run Code Online (Sandbox Code Playgroud)
但是以下内容:
wmic process create 'C:\PROGRA~1\VideoLAN\VLC_117\vlc.exe rtsp://abcd --sout="#duplicate{dst=display} --rtsp-caching=120 --no-video-title-show"'
Run Code Online (Sandbox Code Playgroud)
工作正常 - 除了作为命令它对我没用.所以问题似乎是我原始命令的嵌套卷曲括号部分.
我尝试了各种不同的逃脱角色......到目前为止还没有成功.任何人都可以建议我哪里出错了?