rally 发表于 2021-5-12 21:39:04

WIN64系统 Run执行DOS不行,CMD执行又可以 - 已解决

本帖最后由 rally 于 2021-5-13 13:21 编辑

这个问题始终没弄懂。之前请教了afan大大重定向问题。这次又碰到非重定向问题情况,不知道如何解关键同样是win64 OS,有的机器上可以,有的又不行,不知道哪里的问题。如下图情况。代码直接粘贴过来也运行不了,所以就不贴了哈 。还请版主大大和各路高手指点一下



afan 发表于 2021-5-12 21:47:05

本帖最后由 afan 于 2021-5-12 21:52 编辑

解决方法跟上贴不是一样么?一步步测试。
这里应该不牵涉到重定向,应该直接用完整路径。run 工作目录参数不要,设置为空。

rally 发表于 2021-5-12 22:06:09

afan 发表于 2021-5-12 21:47
解决方法跟上贴不是一样么?一步步测试。
这里应该不牵涉到重定向,应该直接用完整路径。run 工作目录参数 ...

大大,这样测试都不行。加了后面传递输出内容到文件就不行。加后面 >>C:\1.txt就不行

afan 发表于 2021-5-12 22:09:49

rally 发表于 2021-5-12 22:06
大大,这样测试都不行。加了后面传递输出内容到文件就不行。加后面 >>C:\1.txt就不行

你的空格又掉了。。。
代码为什么要贴图呢?是不想让别人方便复制回复吗?

afan 发表于 2021-5-12 22:13:08

另外,你这个路径是带空格的,需要双引号。

rally 发表于 2021-5-12 22:20:11

afan 发表于 2021-5-12 22:13
另外,你这个路径是带空格的,需要双引号。


;~ $run = Run('cmd /c C:\Program Files\smartmontools\bin\smartctl.exe -a /dev/pd1 >> C:\1.txt',"", @SW_HIDE,15)
;~ ProcessWaitClose($run)
;~ $text=StdoutRead($run)
;~ MsgBox(0, "STDOUT read:", $text)


;~ MsgBox(0, '', FileExists('C:\Program Files\smartmontools\bin\smartctl.exe'));测试结果: 1
;~ ShellExecute('C:\Program Files\smartmontools\bin\smartctl.exe','-a /dev/pd1 ',"","",@SW_SHOW); 测试OK
;~ ShellExecute('C:\Program Files\smartmontools\bin\smartctl.exe','-a /dev/pd1>>C:\1.txt',"","",@SW_SHOW); 测试NG,加>>C:\1.txt不行
RunWait(@ComSpec & ' /C ' & "C:\Program Files\smartmontools\bin\smartctl.exe -a /dev/pd1>>C:\1.TXT","",@SW_SHOW) ;测试NG

rally 发表于 2021-5-12 22:20:45

本帖最后由 rally 于 2021-5-12 22:22 编辑

rally 发表于 2021-5-12 22:20
;~ $run = Run('cmd /c C:\Program Files\smartmontools\bin\smartctl.exe -a /dev/pd1 >> C:\1.txt'," ...
大大,加空格,“”都不行。而且这个在别的电脑上运行都是可以的,只是我现在在一台电脑上测的又不行。不知道系统参数哪里的差异,都是WIN64的系统

rally 发表于 2021-5-12 22:23:32

加输出到 1.txt文件(>>C:\1.txt),这个就不行

afan 发表于 2021-5-12 22:26:04

RunWait('"C:\Program Files\smartmontools\bin\smartctl.exe" -a /dev/pd1>>C:\1.TXT', "", @SW_SHOW)

rally 发表于 2021-5-12 22:35:26

afan 发表于 2021-5-12 22:26


还是在我的win7上不行,win10上测都没问题。没搞懂

afan 发表于 2021-5-12 22:42:40

rally 发表于 2021-5-12 22:35
还是在我的win7上不行,win10上测都没问题。没搞懂

确定win7也是这个相同的路径 C:\Program Files\smartmontools\bin\smartctl.exe

回显提示什么?光说不行有什么用

rally 发表于 2021-5-13 08:30:22

回显提示的还是 "Smartctl.exe"既不是内部命令也不是外部命令,也不是可运行的程序或批处理文件。关键是 RunWait('"C:\Program Files\smartmontools\bin\smartctl.exe" -a /dev/pd1', "", @SW_SHOW) 可以运行,但增加输出结果到文件>>C:1\txt ,就不行,提示这个错误

rally 发表于 2021-5-13 13:21:11

问题找到了。原来是由于环境变量PATH值被更改了,更改回来都可以运行了。非常感谢afan大大耐心的指导

afan 发表于 2021-5-13 14:56:08

rally 发表于 2021-5-13 13:21
问题找到了。原来是由于环境变量PATH值被更改了,更改回来都可以运行了。非常感谢afan大大耐心的指导

不是使用的绝对路径吗? C:\Program Files\smartmontools\bin\smartctl.exe 包括后面的 C:\1.TXT 也是全路径。
那与环境变量PATH值有何关系?
如果有关系那你直接在CMD窗口执行应该也不会成功才对。

rally 发表于 2021-5-13 15:09:16

afan 发表于 2021-5-13 14:56
不是使用的绝对路径吗? C:\Program Files\smartmontools\bin\smartctl.exe 包括后面的 C:\1.TXT 也是全 ...

嗯,这个也没想明白,也就尝试改了下系统变量path值,之前被一个程序修改了。加上下面值,问题就没有了
C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem;   
页: [1] 2
查看完整版本: WIN64系统 Run执行DOS不行,CMD执行又可以 - 已解决