cmd.exe和set - 我的块中没有显示变量?

时间:2016-01-28 23:32:22

标签: windows batch-file cmd

免责声明:我在CMD.EXE

中有点新手

我正在尝试在一行(不在.BAT文件中)找到每个匹配的应用程序并启动它。我的代码:

for /R %systemdrive%\ %i in (*myProgram.exe) do (set a=%~fi & "%a%" & pause)

虽然 a =%〜fi 设置变量,但“%a%”不会运行任何内容,因为%a%为空。我必须等到“%a%”工作之前的另一个提示。

我怀疑问题是由于没有使用“setlocal enabledelayedexpansion”而是在我写的时候

setlocal enabledelayedexpansion & for /R %systemdrive%\ %i in (*myProgram.exe) do (set a=%~fi & "!a!" & pause)

我收到错误:“”!a!“'无法识别为内部或外部命令。”

我这样做是因为我需要远程支持我无法创建的各种Windows机器并留下.BAT,因此我使用AutoHotKey(AHK)动态创建“one-liners”和myProgram1。实际上,exe可能是myProgramA.exe或myProgramD.exe。

2 个答案:

答案 0 :(得分:0)

我不是专家,但这对我来说对你所描述的是:

@echo off & setlocal & for /R %systemdrive%\ %%i in (*myProgram.exe) do (echo executing %%i & %%i & pause )

虽然我很感兴趣,为什么你想在一条线上这样做......

答案 1 :(得分:0)

为什么在已经具有所需值的FOR变量时设置环境变量?

for /R %systemdrive%\ %i in (*myProgram.exe) do ("%~fi" & pause)