Batch file 从VBA执行.bat文件与手动单击执行.bat文件

Batch file 从VBA执行.bat文件与手动单击执行.bat文件,batch-file,excel,vba,Batch File,Excel,Vba,我是新手,希望我做得对 我有一个bat文件,可以在hklm\Apache Software Foundation\Tomcat下搜索注册表项。当我手动单击Bat文件时,它会返回答案,但当Shell使用Excel VBA调用它时,它无法搜索该键。以下是bat文件: @echo off setlocal enableextensions enabledelayedexpansion set xx=2 for /f "tokens=3 delims= " %%D in ( 'reg query \\

我是新手,希望我做得对

我有一个bat文件,可以在hklm\Apache Software Foundation\Tomcat下搜索注册表项。当我手动单击Bat文件时,它会返回答案,但当Shell使用Excel VBA调用它时,它无法搜索该键。以下是bat文件:

@echo off 
setlocal enableextensions enabledelayedexpansion
set xx=2
for /f "tokens=3 delims= " %%D in (
'reg query \\servername"\hklm\software\Apache Software Foundation\Tomcat" /s /v Version'
) do (
if !xx!==1 set "var3=%%D,"
set /a "xx = xx - 1"
)
if "%var3%"=="" (set "var3= ,")
echo %var3%
pause
下面是vba对它的调用方式: 调用Shell(“C:\Users\mynetworkID\desktop\C.bat”)

它正确运行bat文件,但无法搜索注册表项。你知道为什么吗?提前感谢

Shell()未经许可无法绕过regsvr32.exe,可以改用ShellExecute API:


希望我有它的代码,但现在项目不再在我手中了

尝试将@echo离线:看看它实际在做什么它显示代码块,但当我使用VBA运行bat时错误仍然存在。仅供参考这是错误消息:错误:系统找不到指定的注册表项或值手动运行时,您是否以管理员身份运行?或作为运行Excel的同一用户?与管理员的同一用户。我的计算机上只有一个管理员用户配置文件,这就是我当前使用的。我已经在我的机器上设置好了(将服务器名更改为我的本地机器名)。当我直接从VBA运行它时,它给了我错误,因为密钥不存在。我创建了密钥并再次运行。两人做了同样的事。您确定运行的是相同的bat文件副本吗?