[英]Running a batch file in a given directory using VBA
當我轉到我的批處理文件的位置並打開它時,批處理文件可以正常工作。 我的批處理文件很簡單:
cd .\data
dir/b/o:n > names.txt
如您所見,我在當前目錄中並向下移動到子目錄“data”並處理所有名稱並創建名為names.txt
的文件。
當我說
shell "location of file"
它打開批處理文件,但是默認的目錄是C:\\my documents
,所以我的命令無法工作,因為它找不到子目錄。 我希望這是一個動態批處理文件,因此我需要在VBA中編寫一些東西,它將打開當前目錄下的批處理文件或此類效果。
我該怎么做呢?
以下內容應該為您提供所尋求的效果。
我的測試代碼是:
Option Explicit
Sub TryShell()
Dim PathCrnt As String
PathCrnt = ActiveWorkbook.Path
Call Shell(PathCrnt & "\TryShell.bat " & PathCrnt)
End Sub
我的測試批處理文件名為TryShell.bat,包含:
cd %1
dir *.* >TryShell.txt
我已將我的批處理文件放在與包含我的宏的工作簿相同的文件夾中。
語句PathCrnt = ActiveWorkbook.Path
將PathCrnt設置為包含活動工作簿的目錄的名稱。 您可以將PathCrnt設置為您需要的任何目錄。
當我調用Shell
,我添加了PathCrnt
作為參數。
在我的批處理文件中,我將當前目錄設置為%1
,這是第一個參數。
dir
命令按我的意願工作,因為當前目錄是我的目錄而不是系統默認目錄。
希望這很清楚。
C:\\ My Documents可能是您的speadsheet所在的目錄。 如果你添加
ChDir "C:\TheFolderWhereYourBatchIs"
在啟動Shell命令之前應該有效...
或者,您可以將批處理文件更改為使用絕對目錄而不是相對目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.