gpt4 book ai didi

macos - 我如何让我的 "terminal"命令在 vba 的正确文件夹中运行(在 OSX 上)

转载 作者:太空狗 更新时间:2023-10-29 14:06:35 25 4
gpt4 key购买 nike

我有一个 excelfile(Excel 2011,在 OSX 10.9.4 上运行),它将其数据导出到一个文本文件中。我想在导出后自动将此文本文件上传到 Git。

我使用这篇文章中描述的 execShell 函数: VBA Shell function in Office 2011 for Mac这为我执行的命令提供了很好的输出。

我想转到我的文件夹(放置我的新文件的地方)并从那里调用我的 git commit 命令(“git add *”、“git commit -m commitmessage”和“git push”)。但问题是我无法进入我的文件夹。如果我尝试 cd/Users/username/folder 然后 pwd 我总是返回“/”作为位置(从那里我不能调用我的 git 命令)

完整的代码如下:

commitMessage = """New feature file: " & ActiveSheet.Name & """"
gotoPath = Replace(Replace(CurDir(), ":", "/"), "Macintosh HD", "") 'make a "normal" path from CurDir()
result = execShell("cd " & gotoPath, exitCode)
result = execShell("pwd", exitCode)
result = execShell("git add *", exitCode)
result = execShell("git commit -m """ & commitMessage & """", exitCode)
result = execShell("git push", exitCode)

如果我自己从终端执行我的 git 命令(在正确的文件夹中),提交工作正常。如果我使用 execShell 函数执行“say”命令,它也能正常工作

有人对如何到达正确的位置有任何建议吗?或用于此目的的替代方法?

最佳答案

每次调用 execShell 时,它都会启动一个新的 shell。该 shell 执行命令,然后退出。因此,您的新 shell 确实更改了该 shell 的目录 ,然后退出。您执行的下一个新 shell 的启动位置与上一个 shell 的启动位置完全相同 - 而不是它退出的位置,因为它是一个新的、不同的进程。

你需要在一个 shell 中做所有事情:

execShell("cd somewhere && do something && do something else")

以上只会在前一个成功的情况下执行每个后续命令,如果您想无条件地执行其他命令,而不管前一个是否失败,请用分号分隔命令:

execShell("cd somewhere; do something; do something else")

关于macos - 我如何让我的 "terminal"命令在 vba 的正确文件夹中运行(在 OSX 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27247940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com