【发布时间】:2019-01-28 23:05:12
【问题描述】:
我正在尝试编写一个 shell 脚本,该脚本将同时在多个文件上运行 PHP 脚本(这需要在 json 文件上使用 exe 文件和 php 文件)。在这种情况下,json 文件是唯一可变的。
如果我手动使用命令提示符,这是我需要输入的命令以达到预期的结果-
C:/Users/myusername/Desktop/XAMPP/php/php.exe transcript.php transcribedfile.json
我的工作表的单元格 G2 包含 json 文件名,这就是我在第二行激活它的原因。一旦我可以让 shell 脚本工作,我将在一个循环中编码,循环遍历 G 列中的所有值,从 G2 开始,直到 ActiveCell 值为“”。
这是我尝试过的-
Sub Shell()
Range("G2").Activate
Dim strProgramName As String
Dim strArgument As String
strProgramName = "C:\Users\myusername\Desktop\XAMPP\php\php.exe transcript.php " & ActiveCell.Value
strArgument = "/G"
Call Shell("""" & strProgramName & """ """ & strArgument & """", vbNormalFocus)
End Sub
当我运行 sub 时,我收到“找不到文件”错误。我测试了strProgramName,发现如果我在那时切断代码,我可以让php.exe运行,但我需要它来识别整个字符串。
欢迎任何想法。提前谢谢你。
【问题讨论】:
-
php.exe 如何知道在哪里可以找到这两个文件?您可以考虑传递完整路径(如果路径可能包含空格,请不要引用路径)
-
设置你的PHP路径环境值,然后你可以在没有路径的情况下调用php。这可能不会解决问题,但它会让生活更轻松。
-
@TimWilliams-它们都位于同一个目录中。我将如何包含完整路径?抱歉,我对此非常陌生。
-
@ArtisticPhoenix - 目前,我没有这台计算机的管理员权限,所以我无法更改这些值。
-
"same directory" as what - 可执行文件,还是你的工作簿?
标签: php vba excel shell command-line-arguments