标题: [问题求助] 怎么获取vbs脚本文件所在的路径 [打印本页]
作者: grf9527 时间: 2012-6-25 15:21 标题: 怎么获取vbs脚本文件所在的路径
本帖最后由 CrLf 于 2012-6-25 17:17 编辑
- Sub bat
- echo off & cls
- echo create_shortcut
- start wscript -e:vbs "%~f0"
- Exit Sub
- End Sub
-
- Set WshShell = WScript.CreateObject("WScript.Shell")
- strDesktop = WshShell.SpecialFolders("Desktop") :'特殊文件夹“桌面”
- Rem 在桌面创建一个电影快捷方式
- set oShellLink = WshShell.CreateShortcut(strDesktop & "\lingdong.lnk")
- oShellLink.TargetPath = "D:\batrun\gf.exe" : '目标
- oShellLink.WindowStyle = 1 :'参数1默认窗口激活,参数3最大化激活,参数7最小化
- oShellLink.Hotkey = "Ctrl+Alt+e" : '快捷键
- oShellLink.IconLocation = "D:\batrun\gf.exe, 0" : '图标
- oShellLink.Description = "快捷方式" : '备注
- oShellLink.WorkingDirectory = "D:\batrun\" : '起始位置
- oShellLink.Save : '创建保存快捷方式
复制代码
请注意上面的绝对路径,在正常情况下,这个路径是变化的,后面的gf.exe是不变化的。
作者: lky216 时间: 2012-6-25 16:08
- @echo %~dp0
- ::显示文件的路径
- @echo %~nx0
- ::显示文件名
- @echo %~f0
- ::显示本身路径及文件名
- pause
复制代码
作者: CrLf 时间: 2012-6-25 16:46
本帖最后由 CrLf 于 2012-6-25 16:48 编辑
vbs 里的:- Option Explicit
- Dim objFSO,strFile
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Set strFile = objFSO.GetFile(WScript.ScriptFullName)
- MsgBox strFile.ParentFolder
- Set objFSO = Nothing
- Set strFile = Nothing
- ' 正儿八经的方案,参考 http://blog.csdn.net/buyicn/article/details/5641106
复制代码
- Option Explicit
- Dim f,strPath
- f = WScript.ScriptFullName
- MsgBox Left(f,Len(f) - Len(WScript.ScriptName))
- ' 比较简洁的方案
复制代码
作者: powerbat 时间: 2012-6-25 16:47
- f0 = WScript.ScriptFullName
- dp0 = Mid(f0, 1, InStrRev(f0, "\"))
- Target = dp0 & "gf.exe"
复制代码
有些人不懂什么叫vbs
作者: powerbat 时间: 2012-6-25 16:50
这么巧,和版主同时发帖。
作者: powerbat 时间: 2012-6-25 17:03
回复 3# CrLf
用fso的话,再补充一个- f0 = WScript.ScriptFullName
- Set fso = CreateObject("Scripting.FileSystemObject")
- dp0 = fso.GetAbsolutePathName(f0 & "\..")
- Target = dp0 & "\gf.exe"
复制代码
作者: grf9527 时间: 2012-6-25 17:53
大校的两个办法都很好.
而且我发现,如果不弹出窗口,把vbs改成bat也能运行.
我是搞c++的,没有办法了,才搞这么个东西,在win7下建立应用程序的快捷方式。呵呵。
跟大家学习了。
斑竹和大校都是搞什么语言的,感觉你们经验丰富的样子。
作者: grf9527 时间: 2012-6-25 18:12
版主的方式没有调通,那段语句确实可以实现显示的功能,可是无法集成到我的vbs的代码中,没有提示成,如果斑竹愿意,可否帮忙调通- Option Explicit
-
- Sub bat
- echo off & cls
- echo create_shortcut
- start wscript -e:vbs "%~f0"
- Exit Sub
- End Sub
-
-
- 'Dim objFSO,strFile,dp1
- 'set
- objFSO = CreateObject("Scripting.FileSystemObject")
- 'set
- strFile = objFSO.GetFile(WScript.ScriptFullName)
- 'set
- dp1= strFile.ParentFolder
-
-
- Set WshShell = WScript.CreateObject("WScript.Shell")
- strDesktop = WshShell.SpecialFolders("Desktop") :'特殊文件夹“桌面”
- Rem 在桌面创建一个快捷方式
- set oShellLink = WshShell.CreateShortcut(strDesktop & "\lingdong.lnk")
-
- Target = dp1 & "lingdong.exe"
- oShellLink.TargetPath =Target
- oShellLink.WindowStyle = 1
- oShellLink.Hotkey = "Ctrl+Alt+e"
- oShellLink.IconLocation = Target & ", 0"
- oShellLink.Description = "lingdong.exe的快捷方式"
- oShellLink.WorkingDirectory = dp1
- oShellLink.Save
复制代码
作者: CrLf 时间: 2012-6-25 18:28
回复 8# grf9527
估计是因为你的原脚本中其他变量没有 Dim...改用 powerbat 的方案或用以下两句试试,路径保存于 strPath 变量:- f = WScript.ScriptFullName
- strPath = Left(f,Len(f) - Len(WScript.ScriptName))
复制代码
作者: Demon 时间: 2012-6-25 23:17
搞C++的改玩VBS了哦- /*
- * Author: Demon
- * Date: 2012/6/25
- * Website: http://demon.tw
- * Description: create shorcut using C++, no error handling for simplicity
- */
- #include <Windows.h>
- #include <shlobj.h>
- #include <Shlwapi.h>
- #pragma comment(lib, "Shlwapi.lib")
-
- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
- {
- IShellLink *pShellLink;
- IPersistFile *pPersistFile;
- WCHAR TargetPath[MAX_PATH], WorkingDirectory[MAX_PATH], Desktop[MAX_PATH];
- LPITEMIDLIST p;
-
- CoInitialize(NULL);
- CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&pShellLink);
-
- GetModuleFileName(NULL, TargetPath, MAX_PATH);
- PathRemoveFileSpec(TargetPath);
- lstrcpyn(WorkingDirectory, TargetPath, MAX_PATH);
- PathAppend(TargetPath, L"gf.exe");
-
- pShellLink->SetPath(TargetPath);
- pShellLink->SetShowCmd(SW_SHOWNORMAL);
- pShellLink->SetHotkey(MAKEWORD(0x45, HOTKEYF_CONTROL | HOTKEYF_ALT));
- pShellLink->SetIconLocation(TargetPath, 0);
- pShellLink->SetDescription(L"快捷方式");
- pShellLink->SetWorkingDirectory(WorkingDirectory);
-
- pShellLink->QueryInterface(IID_IPersistFile, (void **)&pPersistFile);
- SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &p);
- SHGetPathFromIDList(p, Desktop);
- PathAppend(Desktop, L"lingdong.lnk");
- pPersistFile->Save(Desktop, TRUE);
-
- pShellLink->Release();
- pPersistFile->Release();
- CoUninitialize();
- return 0;
- }
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |