[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]批处理为什么在if exist 语中无法赋值?

  1. @echo off
  2. set SFR=D:\1.txt
  3. set /a se=0
  4. set ss=0
  5. if exist "%SFR%" (
  6.     echo 文件存在
  7.     %se%=1
  8.     set ss=1
  9.     echo se=%se%
  10.     echo ss=%ss%
  11. ) else echo 文件不存在
  12. pause
复制代码
运行结果:

文件存在
'0' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
se=0
ss=0
请按任意键继续. . .

为什么se、ss2个变量都没有变成1?
并且还提示 %se%=1 出错('0' 不是内部或外部命令,也不是可运行的程序
或批处理文件)。

麻烦哪位帮忙解释下
刚学2天的批处理,让大家见笑了哈。。。

[ 本帖最后由 YJDP 于 2010-11-23 15:53 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

使用延迟变量就好了,放在首行
  1. setlocal enabledelayedexpansion
复制代码
  1. %se%=1
复制代码
这段是干嘛的?要改变%se%的值的话还得使用set命令
  1. set se=1
复制代码
还有2句改成
  1. echo se=!se!
  2. echo ss=!ss!
复制代码
1

评分人数

TOP

原来是这样啊,我还以为只有在用for命令的时候才用到延迟变量,郁闷了~
谢谢!!

TOP

返回列表