jmsdhn 發表於 2017-11-18 13:24

如何讓VBS中的絕對路徑可以被換成動態的

本帖最後由 jmsdhn 於 2017-11-18 13:29 編輯

以下是用VBS執行BAT的指令Set ws = CreateObject("Wscript.Shell")
ws.run "X:\TEST\AAA.bat",vbhide
可以讓BAT以隱藏的方式執行
超好用
但是VBS似乎只接受檔案的絕對路徑

在VBS中有何方法
可以有如以下BAT的指令
(為了避免混淆 先說一下 以下這個批次檔不是AAA.bat)cd/d %~dp0for /f "delims= tokens=1" %%i in ('dir/s/b \AAA.bat') do %%i
不曉得這一列指令為何不能顯示在複製代碼框內
只能寫在外面了

也就是希望這個被操作的AAA.EXE或是AAA.BAT
在VBS中也可以是動態的
不用擔心這個AAA.EXE或是AAA.BAT
可能有一天會移動位置而抓不到
感謝!

csihcs 發表於 2017-11-18 23:10


Set fso = WScript.CreateObject("Scripting.FileSystemObject")
fd = fso.GetParentFolderName(WScript.ScriptFullName) & "\"

Set ws = CreateObject("Wscript.Shell")
ws.run fd & "AAA.bat",vbhide

jmsdhn 發表於 2017-11-19 21:13

可以執行
基本上這些指令是排除絕對路徑出現在VBS的內容中

不過跟BAT還是差很多
BAT可以讓兩個批次檔之間或批次檔跟目標之間
在同一個磁碟中處在不同路徑深處
譬如
X:\TEST\AAA.bat
的內容包含
cd/d %~dp0
for /f %%i in ('dir/s/b \目標.ttt') do (任何事)
就可以對
X:\SSS\TTT\UUU\目標.ttt
做任何事

但樓上大大這樣的寫法
似乎VBS必須跟該目標放在同一路徑下吧
比較希望可以全動態

感謝回應
雖然跟絕對路徑放於VBS內的結果一樣(VBS仍必須與目標檔放一起)
但也讓我再多學到一些VBS知識

csihcs 發表於 2017-11-19 21:30

jmsdhn 發表於 2017-11-19 21:13
可以執行
基本上這些指令是排除絕對路徑出現在VBS的內容中



你的這個舉例來看,

用絕對路徑比相對路徑好。

另外,硬要做的話,你可以試試看"..\"切換吧。

頁: [1]
查看完整版本: 如何讓VBS中的絕對路徑可以被換成動態的