当前位置: 首页 > 知识库问答 >
问题:

这次批处理脚本出人意料

李星辰
2023-03-14

在运行这个脚本后,我发现一些软件出乎意料,这次我使用的是64位windows 7。正在尝试使用注册表获取软件的安装位置。如果我回显了_名称,那么我就得到了正确的安装位置,但脚本在if-else中退出,表示这次某个软件出人意料

setlocal ENABLEEXTENSIONS
set KEY_NAME=HKEY_CURRENT_USER\Software\somesoftware
set VALUE_NAME=InstallDirectory

SET THEME_NAME=
FOR /f "usebackq tokens=2,*" %%a in (`REG QUERY "HKEY_CURRENT_USER\Software\somesoftware" /v InstallDirectory`) DO (
    SET THEME_NAME=%%b
)
echo %THEME_NAME%
if defined THEME_NAME (
set PathValue= %THEME_NAME%

     ) else (
   echo %KEY_NAME%\%VALUE_NAME% not found.
 )

共有1个答案

年良骏
2023-03-14

您的脚本没有使用KEY_NAME或VALUE_NAME,这可能就是您精简示例的方式。

为了测试,我修改了你的脚本,如下所示,它看起来像我预期的那样工作。

setlocal ENABLEEXTENSIONS
set KEY_NAME=HKEY_CURRENT_USER\Software\%1
set VALUE_NAME=InstallDirectory

SET THEME_NAME=
FOR /f "usebackq tokens=2,*" %%a in (`REG QUERY "%KEY_NAME%" /v %VALUE_NAME%`) DO (
    SET THEME_NAME=%%b)
echo THEME_NAME=%THEME_NAME%
if NOT ""=="%THEME_NAME%" (
    set PathValue=%THEME_NAME%
    echo PathValue=%PathValue% 
) else (
    echo %KEY_NAME%\%VALUE_NAME% not found.
)

注意:我将IF测试更改为仅测试空字符串,这是我自己调试的回声,我使用%1以便我可以测试...

你会想用它作为指导,告诉你最后的脚本。

 类似资料:
  • 主要内容:输出通过使用重定向命令可以在批处理脚本中进行登录。 语法 创建一个名为的文件,并在文件中输入以下命令。 上面的命令有一个错误,因为命令的选项是以错误的方式给出的。 输出 如果带有上面的文件的命令运行为 - 而打开文件,会看到下面的错误。 这个命令的语法是 - 通过键入获取更多的帮助内容。 如果打开名为的文件,它会显示一个执行命令的日志。

  • 主要内容:错误消息,复杂的命令行,子程序,Windows版本通常情况下,运行批处理文件时可能会遇到问题,而且大多数情况下都需要以某种方式调试批处理文件,以确定是批处理文件本身的问题。 以下是一些可以帮助调试批处理脚本文件的技术。 错误消息 要找出消息的来源,请按照下列步骤操作 - 第1步 - 移除,即或。 第2步 - 使用必要的命令行参数运行批处理文件,将所有输出重定向到日志文件以供以后比较。 第3步 - 在文件中搜索错误消息 第4步 - 检查上一行是否有

  • 当我运行这个脚本时,我收到 |这在当时是出人意料的。 这是代码: 在句子中,

  • SQLCL正是我所需要的,但我在一件小事上遇到了很大困难: 我想制作一个带有自动连接的脚本(批处理文件),就在EXPORT CSV之后(在远程桌面上:不在服务器上)。 因此,我在批处理文件中对SQLCL使用管道方法: 它正在工作(控制台中没有错误),但无法找到文件导出。csv:当我更改目的地时 它也在工作,但无法找到创建的文件。它与SQL Developer配合得很好,并且文件是在我的deksto

  • 我有一个MyObject流,我想将它批量持久化到DB中(不是一个接一个,而是一次1000个)。所以我想做一个转变,就像 其中每个列表都有一些固定大小的批处理大小。有没有办法用标准的Java 8 Stream API做到这一点?

  • 我在这个Batch脚本中有一个语法错误,但我不知道它是从哪里来的。我是批处理新手,所以我很难弄清楚这一点。我感觉这与语句有关,但我不确定。 我得到的当前错误是: 该命令的语法不正确。