Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用bat文件在安装文件夹中运行exe,而不必担心安装文件夹的位置_Batch File - Fatal编程技术网

Batch file 如何使用bat文件在安装文件夹中运行exe,而不必担心安装文件夹的位置

Batch file 如何使用bat文件在安装文件夹中运行exe,而不必担心安装文件夹的位置,batch-file,Batch File,我创建了一个bat脚本来安装软件,然后使用fnr.exe查找并替换。 我已经生成了fnr.exe的几个命令,并将其粘贴到了.bat中 现在,由于我是从fnr.exe生成它的,所以我编辑了这些命令,首先在C:\Software\fnr.exe下查找fnr.exe应用程序,如下所示(仅举一个示例): “C:\Software\fnr.exe”--静默--cl--dir“C:\Software\bin”--文件掩码“*.*”--excludeFileMask“*.dll,*.exe”--包含子目录--

我创建了一个bat脚本来安装软件,然后使用fnr.exe查找并替换。 我已经生成了fnr.exe的几个命令,并将其粘贴到了.bat中

现在,由于我是从fnr.exe生成它的,所以我编辑了这些命令,首先在C:\Software\fnr.exe下查找fnr.exe应用程序,如下所示(仅举一个示例):

“C:\Software\fnr.exe”--静默--cl--dir“C:\Software\bin”--文件掩码“*.*”--excludeFileMask“*.dll,*.exe”--包含子目录--查找“Enabled=0”--替换“Enabled=1”

现在,我的服务团队技术水平不高,在客户端机器上安装此软件时,他们可能会将软件安装(文件夹)复制到其他位置,例如桌面,这意味着我的bat文件将无法找到fnr.exe(因为根据脚本,它应该位于C:\software下)因此,查找和替换将失败

有办法绕过它吗?有什么建议吗?我可以在脚本中做一些概括的事情吗?他们将安装文件夹复制到何处以在客户端计算机上安装软件并不重要


谢谢

如果我理解正确,您可以这样做:

fnr.exe --silent --cl --dir "C:\software\bin" --fileMask "*.*" --excludeFileMask "*.dll, *.exe" --includeSubDirectories --find "Enabled= 0" --replace "Enabled= 1"
pushd "%~dp0" 
fnr.exe --silent --cl --dir "C:\software\bin" --fileMask "*.*" --excludeFileMask "*.dll, *.exe" --includeSubDirectories --find "Enabled= 0" --replace "Enabled= 1"
popd
只要fnr.exe与批处理文件位于同一文件夹中,该方法就可以工作

如果这不起作用,可能是由于批处理文件是从不同的文件夹运行的(例如使用
C:\Software\Example.bat
;当前目录可能位于任何位置)

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

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

这会临时将当前目录设置为批处理文件的目录。(

可能会有所帮助。感谢MC ND,下面来自Pockechu22的答案工作正常。