簡體   English   中英

如何讓我的“終端”命令從vba(在OSX上)的正確文件夾中運行

[英]How do i get my “terminal” commands to run in the right folder from vba (on OSX)

我有一個excelfile(Excel 2011,在OSX 10.9.4上運行),它將數據導出到文本文件中。 我希望在導出后自動將此文本文件上傳到Git。

我使用本文中描述的execShell函數: Office 2011 for Mac中的VBA Shell函數為我執行的命令提供了很好的輸出。

我想去我的文件夾(我的新文件放在那里),然后從那里調用我的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確實改變for that shell目錄然后退出。 你執行的下一個新shell在你最后一個開始的同一個地方開始 - 而不是它退出的地方,因為它是一個新的,不同的過程。

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

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

如果前一個命令成功,上面只會執行每個后續命令。如果要無條件地執行其他命令,無論前一個命令是否失敗,請用分號分隔命令:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM