如何使用bat文件在setup文件夹中运行exe,而不必担心设置文件夹的位置

时间:2014-09-15 04:18:46

标签: batch-file

我创建了一个bat脚本来安装软件,然后使用fnr.exe进行查找和替换。 我已经生成了很少的fnr.exe命令,并将它粘贴在.bat。

现在,因为我已经用fnr.exe生成了它,所以我编辑了这些命令,首先在C:\ Software \ fnr.exe下找到fnr.exe应用程序,如下所示(仅举例):

"C:\Software\fnr.exe" --silent --cl --dir "C:\software\bin" --fileMask "*.*" --excludeFileMask "*.dll, *.exe" --includeSubDirectories --find "Enabled= 0" --replace "Enabled= 1"

现在我的服务团队技术性很强,在客户端计算机上安装此软件时,他们可能会将软件安装(文件夹)复制到不同的位置,例如桌面,这意味着我的bat文件不会#39;能够找到fnr.exe(因为它应该在C:\ software下的脚本),因此查找和替换将失败。

周围有办法吗?有什么建议?我可以在脚本中做一些可以概括的东西吗,在他们复制setup文件夹的位置来安装客户端机器上的软件并不重要吗?

谢谢

1 个答案:

答案 0 :(得分:1)

如果我在这里正确理解你,你可以这样做:

fnr.exe --silent --cl --dir "C:\software\bin" --fileMask "*.*" --excludeFileMask "*.dll, *.exe" --includeSubDirectories --find "Enabled= 0" --replace "Enabled= 1"

只要fnr.exe与批处理文件位于同一文件夹中,那就可以正常工作。

如果这不起作用,可能是因为批处理文件是从另一个文件夹运行的(例如C:\Software\Example.bat;当前目录可能在任何地方。

在这种情况下,请执行以下操作:

pushd "%~dp0" 
fnr.exe --silent --cl --dir "C:\software\bin" --fileMask "*.*" --excludeFileMask "*.dll, *.exe" --includeSubDirectories --find "Enabled= 0" --replace "Enabled= 1"
popd

这会暂时将当前目录设置为批处理文件的目录。 source)功能