簡體   English   中英

使用VBA在給定目錄中運行批處理文件

[英]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.

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