`
zendj
  • 浏览: 116300 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

如何确定正在运行脚本的文件夹的路径?

阅读更多

问:
您好,脚本专家!如何确定正在运行脚本的文件夹的路径?我喜欢让脚本自动打开正在运行此脚本的文件夹。

-- PD

答:
您好,PD。您知道,对于脚本专家,此问题(同我们所收到的许多问题一样)被我们归到了“为什么我们没有想到”类别之下。脚本专家将花费大量的时间测试脚本,包括由 Windows 脚本编写社区成员所提交的脚本。(嗯,将会有一位脚本专家花费大量时间测试众多脚本。请注意,即使他必须做这里几乎所有的工作,他也不会抱怨。[编者注:包括大多数抱怨。])其中的许多脚本将向某个文件夹添加文件或从该文件夹删除文件,或者将信息写入该文件夹中的日志文件(该脚本本身就在该文件夹中)。这意味着我们经常需要使用 Windows 资源管理器打开脚本的主文件夹。我们如何打开该文件夹呢?嗯,双击我的电脑、双击 C:、双击 Scripts 等等。我们从来没有想过使用脚本来为我们打开文件夹。

您知道,真的应该有人编写每日专栏来说明如何使用与此类似的非常有用的、小的编写脚本任务。那很容易做到,不是吗?

或许是脚本专家并非特别擅长构思出新的想法。不过一旦有其他人提出了这个想法,通常我们可以帮助他们将想法转化为脚本:

Set objShell = CreateObject("Wscript.Shell")

strPath = Wscript.ScriptFullName

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)

strPath = "explorer.exe /e," & strFolder
objShell.Run strPath

正如您所看到的,这个脚本不是特别复杂。首先创建一个 Wscript.Shell 对象的实例;稍后会使用这个对象启动 Windows 资源管理器。然后使用下面这行代码获取运行脚本的完整路径(例如 C:\Scripts\My_script.vbs):

strPath = Wscript.ScriptFullName

进行下一步之前,要马上澄清一下。有些人可能想知道我们为什么不使用 CurrentDirectory 属性来确定脚本的当前目录。本来可以,但有一个问题:脚本的当前目录与其运行时所在的文件夹不一定相同。毕竟,您可以轻松地启动 C:\Scripts 中的一个脚本,然后将当前目录更改为 C:\Test。对于此专栏,我们需要脚本所驻留的文件夹的名称。如果您更愿意获取当前目录,则请使用下面的这个脚本:

Set objShell = CreateObject("Wscript.Shell")
strPath = objShell.CurrentDirectory

strPath = "explorer.exe /e," & strPath
objShell.Run strPath

现在,回到我们的原始脚本。将脚本的完整路径存储到变量 strPath 中之后,我们会创建 Scripting.FileSystemObject 的实例。接下来我们将使用以下两行代码:

Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)

此时,我们已拥有此脚本文件本身的路径:C:\Scripts\My_script.vbs。很好,但我们真正需要的是去掉文件名而仅保留文件夹路径:C:\Scripts。尽管有几种不同的方法可以达到此目的,但是我们认为下面的方法最为简单。此时我们所要做的是使用 GetFile 方法绑定到文件 C:\Scripts\My_script.vbs(请注意我们是如何将变量 strPath 作为单独的参数传递给 GetFile 的)。连接到该文件之后,我们便可以使用 GetParentFolderName 方法获取文件所驻留的文件夹的完整路径;不用说,它恰好是 C:\Scripts。这也恰好是我们想要打开的那个文件夹。

剩下的就很容易了。在将脚本文件夹路径安全地放到变量 strPath 中之后,我们便可使用下面这行代码来构造一个命令行字符串,该字符串将打开 Windows 资源管理器窗口(该窗口的焦点设置为 C:\Scripts):

strPath = "explorer.exe /e," & strPath

现在,剩余的全部工作就是调用 Run 方法,以传递我们刚刚构造的命令行字符串:

objShell.Run strPath

酷吧?现在,所有人对于明天的专栏都有个想法了吧?

分享到:
评论

相关推荐

    共享任意文件夹 自己选路径

    运行脚本后会打开资源管理器 让你选择要共享的文件夹 选好 要是要改共享名 会让你输入 不想改就用文件夹名作共享名

    AI脚本.rar

    下载解压后,将“AI脚本插件合集1.1.jsx”复制到\Abobe Illustrator XX\Presets(在部分AI软件中可能显示为“预设”)\zh_CN\脚本 文件夹下,重新启动ai,就可以在"文件"-"脚本"下看见ai脚本菜单,运行即可。...

    批处理查找当前文件夹及其子目录某文件并运行 批处理 bat.bat

    批处理查找当前文件夹及其子目录某文件并运行 当前文件夹下(包括子目录下)查找某文件并运行 批处理 bat

    一键批量生成多层次文件夹结构,使用Python脚本实现嵌套文件夹批量生成

    面对海量文件资料的归档整理、复杂项目目录的搭建,以及为大数据集预先规划清晰的层次化存储路径,...第3步: 运行脚本,一键创建 一旦路径设置无误,执行自动化脚本,瞬间即可完成原本耗时费力的文件夹架构搭建工作。

    python一键复制打包文件夹工具

    下载脚本并运行,按照提示输入源文件夹路径、目标文件夹路径等信息。 等待脚本完成复制、压缩,并自动关机。 注意事项: 确保源文件夹路径和目标文件夹路径正确无误。 在使用前检查Python版本,确保脚本的兼容性。 ...

    PowerShell中获取当前运行脚本路径的方法

    在运行脚本的时候,有时候需要通过脚本文件所在位置的相对路径来做一些事,比如执行另一个脚本。以前在CMD时代,可以通过%~dp0来获取脚本所在的文件夹,那在PowerShell中要怎么做呢? 很简单,通过内置的$...

    chrome打开共享文件夹完美方案

    背景 在IE8下通过a标签的href="本地路径"可以打开,但是chrome以及firefox不可以。 原因:在IE中输入file:///c:...最后在bat脚本里根据文件【cmdInput.txt】里面的路径直接使用shexec"open"命令打开文件或文件夹。

    windows备份文件夹到另一台机器的脚本(基于共享)

    一个用于windows服务器之间备份文件的脚本文件(backup_files.bat), 下载后先阅读readme.txt,然后配置相关的路径信息,设置共享目录, 最后运行bat文件.

    python小分段同步文件夹工具

    此脚本分为手动和自动设置源目文件夹路径,手动直接运行脚本,把源文件夹和目标文件夹拖动到命令行或终端窗口;如每次同步文件夹相同,可以设置自动模式,把脚本最下面的"自动同步"处的注释去掉并填入源目文件夹(源:...

    python版分段同步复制文件夹目录工具

    此脚本分为手动和自动设置源目文件夹路径,手动直接运行脚本,把源文件夹和目标文件夹拖动到命令行或终端窗口;如每次同步文件夹相同,可以设置自动模式,把脚本最下面的"自动同步"处的注释去掉并填入源目文件夹(源:...

    Windows 脚本技术参考手册

    Windows 脚本文件 (.wsf) WSH 拖放支持 设置和自定义脚本属性 (.wsh) 在命令提示符下运行脚本 从 Windows 运行脚本 WScript.exe 和 CScript.exe 选项 运行脚本需要包括的内容 <br> 设置...

    yolov5数据集自动分类为train、val、test脚本工具

    你需要如下修改代码:修改数据集中图片的文件夹路径,修改数据集中标签的文件夹路径,选中模式(train、val、test),修改随机提前图片的数量(length=200,比如train模式下,length=200,val模式下,length=100),...

    清理maven仓库脚本

    2.双击运行MavenClean.bat脚本,根据提示输入maven仓库路径(第一步中的路径); 3.接下来查找到的.lastUpdate相关文件信息,都将在maven仓库路径下的lastUpdated.txt中记录(脚本写进去的),如果担心误删其它文件...

    support:快速访问给定OmniFocus项目的支持文件夹的脚本

    Support.scpt描述此脚本使您能够在项目的注释中设置“支持”文件夹,并且在运行脚本时将自动在Finder(或PathFinder,如果正在运行)中打开此文件夹。 您可以手动设置文件夹路径(不建议使用;如果需要,请确保使用...

    3dmax一键打包收集贴图、代理文件、灯光文件等插件、贴图路径指定插件

    3、安装方式 下载该插件后,无需安装,将插件放在max场景中上方界面命令栏中的脚本库【脚本-运行脚本/打开脚本(二者选一个,最好是运行脚本里)】 4、将脚本放进运行脚本中,运行点击后弹出打包贴图界面,有两个...

    电脑间的文件同步利器

    目录1:要同步的第一个文件夹路径 目录2:要同步的第二个文件夹路径 注意:对于网络共享文件如 \\192.168.1.1\共享文档 这样的路径是不能同步的, 必须是共享文档子文件夹才行,如:\\192.168.1.1\共享文档\同步...

    批量MXDTOJPG脚本

    一个批量将MXD文件转换成JPG文件的脚本文件。 #用途:将一个文件夹中的所有mxd文件(包括所有子目录中的mxd文件)导出成jpg图片,并放到各自的目录下。...#运行方法:在arcgis工具箱中添加新脚本,然后运行

    python提取所有文件夹名和文件名.zip

    用户只需运行这个脚本,就可以轻松地获取到所需的文件和文件夹名称。这个文件包的使用方法非常简单。首先,用户需要将“提取所有文件夹名和文件名.zip”文件解压到一个合适的位置。然后,打开解压后的Python脚本文件...

    dropbox-shell:一个BASH脚本,用于通过Dropbox在远程计算机上运行脚本程序

    投递箱一个BASH脚本,用于通过Dropbox在远程计算机上运行脚本/程序。 首先,您必须使用以下结构在Dropbox中设置一个文件夹: 投寄箱/远程/ 投寄箱/远程/旧/ 投寄箱/远程/输出/ Dropbox /远程/命令/ 如果需要除...

    Myeclipse10脚本和文件

    压缩包内有两个文档 相应的将patch文档内所有文件复制然后覆盖你的Myeclipse安装路径Myeclipse10\Uninstaller\plugins内 然后运行myeclipse2017_keygen文件夹内的cracker2017.jar这个脚本教程很多 就不赘述了 亲测...

Global site tag (gtag.js) - Google Analytics