批处理for循环中引用变量问题
setbat_name=test.batfor/f%%nin('tasklist/fi"imagenameeqcmd.exe"/v^|findstr%bat_name%^...
set bat_name=test.bat
for /f %%n in ('tasklist /fi "imagename eq cmd.exe" /v ^| findstr %bat_name% ^| findstr "cmd"') do (
echo %%n
)
以上命令写成bat文件,直接cmd执行没问题,但是放计划任务中执行for循环就没有输出结果 展开
for /f %%n in ('tasklist /fi "imagename eq cmd.exe" /v ^| findstr %bat_name% ^| findstr "cmd"') do (
echo %%n
)
以上命令写成bat文件,直接cmd执行没问题,但是放计划任务中执行for循环就没有输出结果 展开
1个回答
展开全部
使用扩展命令,在执行这个for的前面增加一行
setlocal enabledelayedexpansion
一般是在批处理文件的最上面添加;
需要使用到 相对路径或者绝对路径的话,可以看for 的帮助:
另外,FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:
%~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串
setlocal enabledelayedexpansion
一般是在批处理文件的最上面添加;
需要使用到 相对路径或者绝对路径的话,可以看for 的帮助:
另外,FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:
%~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询