col*_*mik 4 windows command-line batch-file
我正在阅读有关修改Windows注册表的命令的Windows命令行文档(Win + F1),特别是"reg add"命令.
reg add HKCU\testfolder /t REG_EXPAND_SZ /v Stokrotka /d "%systemroot%\system32"
现在,我不知道这是如何设计的.当我调用上面的命令时,变量%systemroot%会扩展为C:\Windows.我试过以下不要让变量扩展,但是我无法强迫它不要:
# (setlocal enabledelayedexpansion) && (reg add HKCU\testfolder /t REG_EXPAND_SZ /v Stokrotka /d "!systemroot!\system32") && (setlocal disabledelayedexpansion)
变量'data'(/ d)字段^%systemroot^%或者类似!systemroot!或者只是扩展到C:\ windows.我可以使用.reg文件来完成我的任务,但我根本不想这样做.
我认为可能用于显示变量contents(regedit / regedt32 / reg query (commandline))的程序有问题,但在检查之后可能不是这种情况.
有任何想法吗?我主要感兴趣的是变量值在regedit窗口中应该是什么样子,如果它是:"%systemroot%\system32"或者"C:\windows\system32"被其他程序正确扩展.问候.  
从命令行,这对我有用:
reg add HKCU\testfolder /t REG_EXPAND_SZ /v Stokrotka /d ^%systemroot^%\system32
aphoria 建议的语法是正确的,正如您发现的那样,没有引号。但是,当您需要值中的空格时,就会遇到麻烦。
但是,可以在值中混合引号。它看起来很奇怪,但它有效:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d ^%SystemRoot^%;c:\Program" Files"\Intel\DMIX;C:\bin /t REG_EXPAND_SZ
您可以在需要的地方使用引号,但不要在变量周围使用引号。而且不是在反斜杠之后。
另外,请注意批处理文件中使用的语法与命令行中使用的语法不同。如果将该行放入批处理文件中,则需要将“^”替换为另一个“%”:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d %%SystemRoot%%;c:\Program" Files"\Intel\DMIX;C:\bin /t REG_EXPAND_SZ
(cmd.exe 总是让我想起 Henry Spencer 的名言“那些不懂 Unix 的人注定要重新发明它,很糟糕”)
| 归档时间: | 
 | 
| 查看次数: | 15952 次 | 
| 最近记录: |