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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Windows 从regedit-CMD/Batch文件获取InstallDir_Windows_Batch File_Registry - Fatal编程技术网

Windows 从regedit-CMD/Batch文件获取InstallDir

Windows 从regedit-CMD/Batch文件获取InstallDir,windows,batch-file,registry,Windows,Batch File,Registry,这是我的批处理代码: @echo off title Program cd C:\Program Files (x86)\Company\Program start xxxx.exe exit 我的问题是。。。如果我不知道程序安装在哪里,如何找到此部分:C:\ProgramFiles(x86)\Company\Program,以及批处理文件?我需要从regedit中的InstallDir获取安装路径。有可能吗 我需要这样做: @echo off title Program *here get

这是我的批处理代码:

@echo off
title Program
cd C:\Program Files (x86)\Company\Program
start xxxx.exe
exit
我的问题是。。。如果我不知道程序安装在哪里,如何找到此部分:
C:\ProgramFiles(x86)\Company\Program
,以及批处理文件?我需要从regedit中的InstallDir获取安装路径。有可能吗

我需要这样做:

@echo off
title Program
*here get program path from InstallDir in regedit*
start xxxx.exe
exit
-

Regedit path:
Software\Company\Program
-我在这里得到了程序路径(C:\Program Files(x86)\Company\Program)的InstallDir REG\u SZ值。在第3行更改
Company\Program
后,尝试一下这个方法:

@Echo关闭
对于/F“跳过=1令牌=2*”%%A(
“注册查询”HKLM\SOFTWARE\Company\Program^
/V“InstallDir”2^>Nul'
)设置“EP=%%~B”
回声%%EP%%=%EP%%暂停
您的路径将保存在变量
%EP%
中,出于演示目的,我在最后一行有
Echo
'd。您可能需要将该行替换为:

Start”“/D“%EP%”可执行文件。ext

Start”“%EP%\executable.ext”
编辑

如果您尝试卸载注册表项,它可能会更适合您。例如:

@Echo关闭
对于/F“跳过=1令牌=2*”%%A(
“Reg Query”HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\U‌​n安装\公司\程序“^
/V“卸载字符串”2^>Nul'
)一定要启动“”“%%~B”
在第3行更改
公司\计划后,尝试以下操作:

@Echo关闭
对于/F“跳过=1令牌=2*”%%A(
“注册查询”HKLM\SOFTWARE\Company\Program^
/V“InstallDir”2^>Nul'
)设置“EP=%%~B”
回声%%EP%%=%EP%%暂停
您的路径将保存在变量
%EP%
中,出于演示目的,我在最后一行有
Echo
'd。您可能需要将该行替换为:

Start”“/D“%EP%”可执行文件。ext

Start”“%EP%\executable.ext”
编辑

如果您尝试卸载注册表项,它可能会更适合您。例如:

@Echo关闭
对于/F“跳过=1令牌=2*”%%A(
“Reg Query”HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\U‌​n安装\公司\程序“^
/V“卸载字符串”2^>Nul'
)一定要启动“”“%%~B”
好的。我创造了这个:

@echo off
:CheckOS
IF EXIST "%PROGRAMFILES(X86)%" (GOTO 64BIT) ELSE (GOTO 32BIT)

:64BIT
FOR /F "Skip=2 tokens=2*" %%A IN (
   'REG QUERY "HKLM\Software\Wow6432Node\Electronic Arts\NFSMW" /v InstallDir'
) DO (set cdNFSMW=%%B)

GOTO END

:32BIT
FOR /F "Skip=2 tokens=2*" %%A IN (
   'REG QUERY "HKLM\Software\Electronic Arts\NFSMW" /v InstallDir'
) DO (set cdNFSMW=%%B)

GOTO END

:END

chdir /d %cdNFSMW%
start unins000.txt
exit
而且效果很好。但是,我不知道哪种方法更好更准确

这:

或者这个:

:CheckOS
IF EXIST "%PROGRAMFILES(X86)%" (GOTO 64BIT) ELSE (GOTO 32BIT)

:64BIT
echo 64-bit...
GOTO END

:32BIT
echo 32-bit...
GOTO END

:END
你觉得怎么样?哦还有一件事,值是多少

重要吗?写得好吗?

好。我创造了这个:

@echo off
:CheckOS
IF EXIST "%PROGRAMFILES(X86)%" (GOTO 64BIT) ELSE (GOTO 32BIT)

:64BIT
FOR /F "Skip=2 tokens=2*" %%A IN (
   'REG QUERY "HKLM\Software\Wow6432Node\Electronic Arts\NFSMW" /v InstallDir'
) DO (set cdNFSMW=%%B)

GOTO END

:32BIT
FOR /F "Skip=2 tokens=2*" %%A IN (
   'REG QUERY "HKLM\Software\Electronic Arts\NFSMW" /v InstallDir'
) DO (set cdNFSMW=%%B)

GOTO END

:END

chdir /d %cdNFSMW%
start unins000.txt
exit
而且效果很好。但是,我不知道哪种方法更好更准确

这:

或者这个:

:CheckOS
IF EXIST "%PROGRAMFILES(X86)%" (GOTO 64BIT) ELSE (GOTO 32BIT)

:64BIT
echo 64-bit...
GOTO END

:32BIT
echo 32-bit...
GOTO END

:END
你觉得怎么样?哦还有一件事,值是多少


重要吗?写得好吗?

提供实际的注册表根、键、值名和数据会有所帮助,它们不能是“敏感信息”!要获取注册表信息,您可能需要在
For
循环中使用
Reg Query
。请提供实际的注册表根,可能是
HKEY\U LOCAL\U MACHINE
HKEY\U CURRENT\U USER
,并键入,它不是真正的
Software\Company\Program
是吗?这是非常不清楚的。从我得到的信息来看,您需要知道应用程序名称,然后在注册表中进行搜索以匹配该应用程序,然后从那里提取路径以执行。对吗?我已经把你的问题放回过去了。请不要删除您的问题内容,并将其替换为答案(答案有一个答案工具)。此外,您报告的工作脚本不可能工作,但可以使用
Start
命令替换
Echo
not to。如果你能证明我是不正确的,我很乐意承认,但是接受我的答案并更改最后一行是不正确的行为。提供实际的注册表根、键、值名称和数据会有所帮助,它们不能是“敏感信息”!要获取注册表信息,您可能需要在
For
循环中使用
Reg Query
。请提供实际的注册表根,可能是
HKEY\U LOCAL\U MACHINE
HKEY\U CURRENT\U USER
,并键入,它不是真正的
Software\Company\Program
是吗?这是非常不清楚的。从我得到的信息来看,您需要知道应用程序名称,然后在注册表中进行搜索以匹配该应用程序,然后从那里提取路径以执行。对吗?我已经把你的问题放回过去了。请不要删除您的问题内容,并将其替换为答案(答案有一个答案工具)。此外,您报告的工作脚本不可能工作,但可以使用
Start
命令替换
Echo
not to。如果你能证明我是错的,我很乐意承认,但是接受我的答案并为你们两个改变最后一行是不正确的行为。是的!然而,我认为他正试图通过在注册表中搜索并找到路径来确定路径。因此,可能类似于
reg query HKLM\SOFTWARE/f ApplicationPath/s
,然后循环遍历变量,在每个路径中找到与
Adobe.exe
匹配的项,并将该路径设置为执行变量。。。但可能是错的。:)如果他真的想手动设置,那么最好手动通过regedit并设置每个路径,除非它仅用于特定的应用程序。不,你有权。这就是我想做的。找到应用程序的路径并运行它。@DamianSilent这太傻了。。为什么不这样做呢<(xxxx.exe)中%%i的代码>执行@echo.%~$路径:我
我只需要使用注册表就可以了@compo
@Echo Off For/F“Skip=1 Tokens=2*”%%A在('Reg Query“HKLM\SOFTWARE\Company\Program”^/V“InstallDir”2^>Nul)中设置“EP=%%~B”Start“xxxx.exe”“%EP%”
此代码打开