請選擇 進入手機版 | 繼續訪問電腦版

微剋多資訊

 找回密碼
 註冊

Sign in with google

Google帳號登入

搜索
回覆 4則 瀏覽 15913篇
Line

[問題已解決] 如何讓VBS中的絕對路徑可以被換成動態的

該用戶從未簽到

升級   50.5%

發表於 2017-11-18 13:24 | 顯示全部樓層 |閱讀模式
本帖最後由 jmsdhn 於 2017-11-18 13:29 編輯

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

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

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

樓主熱門主題

該用戶從未簽到

升級   61.3%

發表於 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
1 0

使用道具

該用戶從未簽到

升級   50.5%

 樓主| 發表於 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知識

使用道具

該用戶從未簽到

升級   61.3%

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

你的這個舉例來看,

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

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

使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2024-4-16 22:39

Discuz! X

© 2009-2023 Microduo

快速回覆 返回頂部 返回列表