Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 如果批量中存在注册表项和值_Batch File_Registry - Fatal编程技术网

Batch file 如果批量中存在注册表项和值

Batch file 如果批量中存在注册表项和值,batch-file,registry,Batch File,Registry,如何检查批处理文件中是否存在注册表项和值,如果存在,如何更改该值。下面是我用英语要做的 HKCU\Software\App 如果“目录”=“c:\users\%username%\AppData” 然后更改为“目录”=%userprofile%\AppData 否则不执行任何操作查看此操作是否有效: @echo off&setlocal reg query HKCU\Software\App/v目录2>NUL||( reg add HKCU\Software\App/v目录/t reg\u EX

如何检查批处理文件中是否存在注册表项和值,如果存在,如何更改该值。下面是我用英语要做的

HKCU\Software\App

如果“目录”=“c:\users\%username%\AppData”
然后更改为“目录”=%userprofile%\AppData

否则不执行任何操作

查看此操作是否有效:

@echo off&setlocal
reg query HKCU\Software\App/v目录2>NUL||(
reg add HKCU\Software\App/v目录/t reg\u EXPAND\u SZ/d“%%userprofile%%\AppData”
)
有关语法的完整详细信息,请参见cmd控制台中的
reg query/?
reg add/?


编辑:仅当reg值存在且包含特定位置时才限制reg值的创建需要更多的逻辑。如果注册表中包含的路径包含尾随反斜杠或内联点,或已展开或未展开
%username%
,则可能导致简单字符串匹配失败。在比较路径时,最好将
cd
pushd
放入目录中,以确保其格式统一、所有相关目录都已解析、所有变量都已展开、尾部斜杠已删除等。使用
for
循环+
%%~sI
或类似选项比较短文件名,但是
pushd
方法还有一个额外的好处,即测试目录是否存在以及是否可以访问

@echo off&setlocal
rem//仅当注册表中存在应用程序项时才继续
注册查询HKCU\Software\App>NUL 2>NUL&&(
对于/f“跳过=2个令牌=2*”%%I in(
'注册查询HKCU\Software\App/v目录2^>NUL'
)一定要调用pushd“%%~J”2>num&&(
rem//call pushd“%%~J”确保目录存在并且位置被规范化
延迟扩展
如果/i“!CD!”==“C:\Users\%username%\AppData”调用:regupdate
端部
邻苯二胺
rem//如果pushd失败,则路径无效。请更新它。
)| |呼叫:regupdate
)
退出/b
:regupdate
reg add HKCU\Software\App/v目录/t reg\u EXPAND\u SZ/d“%%userprofile%%\AppData”/f

另一个注意事项:
%appdata%
%localappdata%
可能比
%userprofile%\appdata
更可取,这取决于您在检索到值后打算对其执行的操作。查看Windows环境变量的完整列表。

唯一的问题是,如果不存在,它将创建键和值。如果它不存在,我需要它什么也不做。我只想在特定键和值存在时更改该值。谢谢你。还有其他想法吗?:)