如何在批处理脚本中找到应用程序的完整路径

2024-03-30

如何在批处理脚本中找到应用程序 XYZ(如果已安装)的完整路径

澄清:

  1. 应用程序不在 PATH 中
  2. 我所拥有的就是它的名称,在本例中为“ISTool.exe”,我想得到C:\程序\ISTool\ISTool.exe

您可以在路径(或其他类似路径的字符串,如果需要)上找到可执行文件:

c:\> for %i in (cmd.exe) do @echo. %~$PATH:i
C:\WINDOWS\system32\cmd.exe

c:\> for %i in (python.exe) do @echo. %~$PATH:i
C:\Python25\python.exe

详细信息可以在帮助文本的末尾找到"for"命令,"for /?"但总结是:

%~i    - expands %i removing any surrounding quotes.
%~fi   - expands %i to a fully qualified path name.
%~di   - expands %i to a drive letter only.
%~pi   - expands %i to a path only.
%~ni   - expands %i to a file name only.
%~xi   - expands %i to a file extension only.
%~si   - expanded path contains short names only.
%~ai   - expands %i to file attributes of file.
%~ti   - expands %i to date/time of file.
%~zi   - expands %i to size of file.
%~$P:i - searches the directories listed in the P environment variable
         and expands %i to the fully qualified name of the first one found.
         If the environment variable name is not defined or the file is not
         found by the search, then this modifier expands to the empty string.

可以组合修饰符以获得复合结果:

%~dpi    - expands %i to a drive letter and path only.
%~nxi    - expands %i to a file name and extension only.
%~fsi    - expands %i to a full path name with short names only.
%~dp$P:i - searches the directories listed in the P environment variable
           for %i and expands to the drive letter and path of the first
           one found.
%~ftzai  - expands %i to a DIR like output line.

如果您的可执行文件不在路径上(根据您的编辑),那么最好的选择是使用裸/子目录格式dir这将为你做。从根目录:

dir /b /s ISTool.exe

将为您提供该驱动器上具有该名称的所有文件。然后你只需要解析输出。我自己的偏好是使用 Cygwin 的"find /cygdrive -name ISTool.exe"但那是因为我已经安装了它。您可能不希望这样(或者甚至没有这样的选择)。

Update:

That dir /b /s命令将需要一段时间,因为它基本上搜索整个磁盘。如果这是一个问题,您可能需要考虑使用 cmd 文件定期创建所有磁盘上所有文件的缓存记录,例如:

@echo off
setlocal enableextensions enabledelayedexpansion
del c:\files.cache.tmp >nul: 2>nul:
for %%d in (c d e) do (
    cd /d %%d:\
    dir /b /s >>c:\files.cache.tmp
)
del c:\files.cache >nul: 2>nul:
move c:\files.cache.tmp c:\files.cache
endlocal

您可以通过每晚(对于始终在线的服务器)或在启动时(对于桌面)计划任务来执行此操作。您甚至可以使脚本更加智能,每隔几天执行一次(我有一个自动备份脚本,可以在我支持的家庭计算机上执行类似的操作)。这会在临时缓存文件中创建列表,然后覆盖原始列表,以确保最小化文件不存在的时间。

然后你就可以使用:

findstr \\ISTool.exe c:\files.cache

找到您的所有文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在批处理脚本中找到应用程序的完整路径 的相关文章

随机推荐

  • HTML5 画布以一定角度绘制图像

    我正在尝试动画
  • 类似于浏览器的 async_hooks 之类的东西?

    我正在尝试调试在浏览器上下文中运行的一些 第三方 代码 并且我想跟踪所有下游异步函数调用 几乎完全相同async hooks为nodejs提供 本质上 类似https github com mafintosh why is node run
  • putText 用于 UTF-8 字符 (C++)

    我正在使用 putText OpenCV 方法在图像上写入文本 但它仅适用于 ASCII 字符 我需要打印诸如 之类的字符 有人可以帮忙吗 很遗憾 cv putText 仅支持 ASCII 有一个打开错误报告 http www code o
  • 跨多个场景使用 AVAudioPlayer Swift 并能够调节音量

    您好 我想知道是否有一种方法可以在多个场景中使用 AVAudioPlayer 并更改音量 我目前将其放置在我的 gameViewController 中 它是我的应用程序所有场景的控制器 override func viewDidAppea
  • Rails 关联方法如何工作?

    Rails 关联方法如何工作 让我们考虑这个例子 class User lt ActiveRecord Base has many articles end class Article lt ActiveRecord Base belong
  • 将 SVG 作为 Gatsby 中的组件导入

    我见过以下解决方案 import ReactComponent as Img from path to file svg 但在盖茨比看来 这行不通 我知道存在这方面的插件 但也许可以更容易地完成 正如您所说 有一些插件可以实现此目的 这意味
  • 为什么 C++ 标准没有提到 __STDC_IEC_559__?

    根据 C 11 标准 c math
  • DatagramChannel.close() 在 Windows 上保持端口打开

    我正在实施一个发现流程 打开 UDP 套接字以侦听给定端口上的广播响应 发送一些请求 并期待稍后的响应 在给定时间段后关闭 UDP 套接字 第一次通话有效 但其他调用会出现绑定错误 地址已被使用 绑定 我运行的是Windows 7 我做了一
  • spring 在运行时添加数据源

    我正在开发一个带有每个租户数据库策略的 Spring Boot 多租户应用程序 要求是在运行时添加新数据库 这意味着我必须动态创建新的数据源对象 我还研究了 Spring 的 AbstractRoutingDataSource 但需要预定义
  • Java和继承的静态成员[重复]

    这个问题在这里已经有答案了 假设我有以下课程 class Parent private int ID private static int curID 0 Parent ID curID curID 以及这两个子类 class Sub1 e
  • 有类似于 Perforce 的 git-svn 的东西吗?

    有没有一个工具可以让我获得与 Perforce 的 git svn 相同的功能 我在 github 上看到了 git p4 但看起来像是将源代码从 git 存储库导入到 Perforce 存储库 情况是否会反过来呢 它是用作常用工具还是仅用
  • Xcode 7 Git 找不到远程存储库

    我可以在 Xcode 6 X 上毫无问题地推送和拉取此存储库 但它在 Xcode 7 上不起作用 设置与 Xcode 6 X 相同 我尝试输入用户名和密码只是为了确认 但似乎没有任何意义 我使用了正确的 SSH 密钥作为身份验证 但首选项显
  • 如何通过指针处理矩阵中的子矩阵?

    我有一个大小为 n 的矩阵 举个例子 我的递归函数对位于矩阵边界的元素进行处理 现在我想在内方矩阵上调用它 递归调用 这是我的递归函数的原型 void rotate int mat size t n 我知道二维数组是数组中的数组 我知道 m
  • Springfox 类参数已弃用

    在Springfox 3 0中 springfox documentation service Parameter已弃用 是否有提供参数及其构建器的更新方法 以及如何提供其default value 首先 使用RequestParamete
  • 使用 function.php 的单一产品的 Woocommerce 元数据

    我正在努力通过我的functions php 正确过滤元数据 I can get this to work if I edit the meta php in my child theme with no problem short sto
  • 将数据从VSS迁移到SVN

    如何将我的数据从 VSS 迁移到 SubVersion 这取决于您是否想随身携带 VSS 元数据 如果是 请看一下电源管理员 http www poweradmin com sourcecode vssmigrate aspx or Vss
  • 版本号大于 1.18.10 的正则表达式 [重复]

    这个问题在这里已经有答案了 我需要验证应用程序的版本号是否大于 1 18 10 在这种情况下 正则表达式应该是什么样子 不要为此使用正则表达式 使用split and tuple比较 def is recent version versio
  • 将点击事件与 Twitter Bootstrap 结合使用

    我正在使用 twitter bootstrap 开发一个可以在多个设备上呈现的 Web 应用程序 现在我想处理 点击 事件 所以我的问题是 我可以使用 jquery 1 7 2 处理 tap 事件而不使用 jquery Mobile 吗 如
  • minikube docker-env 是什么意思?

    在 Kubernetes 中minikube 教程 https kubernetes io docs tutorials hello minikube create your node js application有这个命令可以使用 Min
  • 如何在批处理脚本中找到应用程序的完整路径

    如何在批处理脚本中找到应用程序 XYZ 如果已安装 的完整路径 澄清 应用程序不在 PATH 中 我所拥有的就是它的名称 在本例中为 ISTool exe 我想得到C 程序 ISTool ISTool exe 您可以在路径 或其他类似路径的