`
zendj
  • 浏览: 121975 次
  • 性别: 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

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

分享到:
评论

相关推荐

    windows下如何将一个文件一次性复制到许多文件夹中?看这个bat脚本就够了

    目标文件夹3"`这一行则定义了要复制文件的目标文件夹,你可以根据需要添加或删除文件夹,各个文件夹路径之间用分号`;`隔开。 `for %%i in (%folders%) do ( ... )`这部分是一个for循环,它会遍历`folders`变量中的...

    jsp选择文件夹路径

    ### JSP中使用Struts2 File属性选择文件夹路径 #### 背景与问题描述 在实际开发过程中,我们可能会遇到这样的需求:用户需要上传一个文件夹而非单个文件。然而,在使用Struts2框架时,其内置的`file`属性只允许...

    COA2文件夹路径修改

    在IT领域,文件夹路径修改是一项常见的操作,尤其对于存储大量数据或应用程序的文件夹而言。"COA2文件夹路径修改"这个话题涉及到的是如何改变一个名为"COA2"的文件夹的位置,以便更好地管理和优化计算机资源。在...

    BAT批处理脚本-文件相关操作-获取相对路径.cmd.zip

    "获取相对路径.cmd.txt"这个文件,虽然在压缩包中被命名为.txt格式,是为了防止意外执行,但在实际使用时,我们需要将其修改回.bat格式,以便能够作为批处理脚本来运行。批处理脚本的运行会解析其中的命令行指令,...

    MATLAB向当前搜索路径添加文件夹和子文件夹

    在MATLAB编程环境中,添加文件夹和其子文件夹到当前搜索路径是非常常见的需求,这有助于MATLAB找到自定义函数和数据文件。本篇将详细解释两种方法来完成这一任务。 首先,我们可以采用图形用户界面(GUI)的方式,...

    jsp_选择文件夹的路径

    ### JSP选择文件夹路径的方法及实现 #### 概述 在JSP(JavaServer Pages)环境下,有时候我们需要让用户能够选择文件夹,并获取该文件夹下的所有文件列表。这种功能通常用于文件上传、文件管理等场景。本文将详细...

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

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

    Shell脚本实现从文件夹中递归复制文件

    #### 运行脚本 要运行此脚本,只需在命令行中输入以下命令: ```bash sh getfilefromdir.sh dir1/dir2 target_directory ``` 其中 `dir1/dir2` 是源目录,而 `target_directory` 是目标目录。注意,目标目录不需要...

    相对路径bat执行exe文件 例子

    这将确保无论用户在哪里运行脚本,都会在他们的个人文件夹下的`子目录`中查找`运行提示txt.exe`。 至于压缩包中的`运行提示txt.bat`和`运行提示txt.exe`,可能是为了演示如何在批处理脚本中通过相对路径调用可执行...

    Win7临时文件夹路径 Win7系统的临时文件夹在哪.docx

    1. Windows 7的全局临时文件夹路径位于: C:\Users\你的用户名\AppData\Local\Temp 这个路径下的临时文件夹是所有用户共享的,用来存放系统和各种应用程序创建的临时文件。 2. IE浏览器的缓存文件夹路径位于: C...

    matlab guide 选择文件夹

    4. 可能会处理选择的文件夹路径,例如读取该文件夹下的文件,或者设置为后续操作的默认路径。 `license.txt`文件可能是关于使用这些DLL的许可信息,确保在使用第三方库时遵循正确的版权和使用条款。 在实际应用中...

    BAT批处理脚本-文件夹变磁盘.zip

    这些脚本可以包含一系列操作系统可识别的命令,通过运行脚本,用户可以一次性执行多个命令,极大地提高了工作效率。例如,“文件夹变磁盘.bat”很可能是一个用于将特定文件夹挂载为虚拟驱动器的脚本。 要实现文件夹...

    BAT批处理脚本-文件相关操作-删除指定路径下指定文件及文件夹外的所有文件及文件夹1.zip

    本压缩包文件“BAT批处理脚本-文件相关操作-删除指定路径下指定文件及文件夹外的所有文件及文件夹1.zip”包含了用于自动删除指定路径下非特定文件或文件夹的BAT脚本。以下是关于这个脚本和批处理技术的详细解释: *...

    py脚本文件夹抽取与风雷

    在Python编程语言中,"py脚本文件夹抽取与风雷"这个标题可能指的是使用Python进行文件和文件夹操作,以及可能涉及到的并发处理或快速执行任务,就像"风雷"那样迅速。在这个场景下,我们可以深入探讨以下几个关键知识...

    QTP 删除文件夹脚本

    5. 参数化:为了实现脚本的通用性,通常会将文件夹路径作为参数传递,而不是硬编码在脚本中。这样,通过改变参数,脚本就能适应不同的文件夹删除需求。 在实际应用中,使用【QTP 删除文件夹脚本】时,需要注意以下...

    Excel-VBA宏编程实例源代码-指定文件夹路径以开启浏览器.zip

    这个“Excel-VBA宏编程实例源代码-指定文件夹路径以开启浏览器.zip”压缩包文件包含了一个名为“指定文件夹路径以开启浏览器.xlsm”的源代码,它演示了如何使用VBA宏来打开指定文件夹路径的浏览器窗口。 首先,我们...

    BAT 批处理拷贝整个文件夹到别的文件夹下

    xcopy "源文件夹路径" "目标文件夹路径" /E /I /Y ``` 这里的`@echo off`是关闭命令行的回显,使得输出更清晰。`xcopy`命令后面跟着源文件夹和目标文件夹的路径,`/E`表示复制包括空的子目录,`/I`如果目标文件夹...

    怎样在wincc中用按钮打开某个文件夹及其他应用程序

    在 WinCC 中使用按钮打开文件夹及其他应用程序 ...我们只需要定义一个按钮,在动态向导中选择要打开的文件夹或应用程序,添加文件夹路径,添加按钮控件即可。这个功能可以大大提高工业自动化的效率和便捷性。

    excel批量创建新建文件夹?.docx

    * 文本文件的后缀名需要改成 "bat",否则无法运行脚本。 * 在双击脚本文件之前,需要确保文件夹的路径正确,否则可能会出现错误。 使用 Excel 批量创建文件夹的方法可以大大提高工作效率,提高工作质量。通过遵循...

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

    在执行备份脚本前,应确认所有服务器之间的网络连接稳定,并且防火墙规则允许必要的文件共享。同时,安全措施也不可忽视,应使用强密码保护共享,并定期更新,防止未授权访问。 总之,基于共享的Windows服务器备份...

Global site tag (gtag.js) - Google Analytics