可能要用变量延迟吧! 例如: setlocal enabledelayedexpansion if exist "Temp\%dat%-%timo%-PASS-%name%" for /f "usebackq tokens=*" %%l in ("Temp\%dat%-%timo%-PASS-%name%") do set /a a= !a! + 1 不过你的好像少了个/a ,
echo off&setlocal enabledelayedexpansion set n=0 pause for /f "tokens=1,2 delims= " %%i in ('dir/b *.jpg') do ( set /a n+=1 echo !n! ) pause 这样就行了!
*************************资源****************************************************************************************************
@echo off set /a num=0 //设置环境变量num /a 命令选项指定等号右边的字符串为被评估的数字表达式 :loop set /a num+=1 if %num%==11 ( goto exit ) echo 这是第 %num% 次运行 echo. goto loop :exit echo 循环结束 pause
几点总结:
系统变量就是环境变量 列入 %PATH%
%1 ~~~%9 是需要在外面传递进来的参数 相当于CmdLine %* 用于显示所有的CmdLine %0 返回批处理的名称 echo %0 可以实现无限循环bat,因为%0代表批处理的程序名(等于在调用自己这个批处理) 例子: @echo off net user %0
自定义变量(自定义环境变量) set var=我是值 //不需要双引号"" echo %var%
让用户自己输入变量,用set命令的/p参数 @echo off set /p var=请输入变量的值: echo %var% pause
用set命令的/A参数 指定等号右边的字符串为被评估的数字表达式 取余运算符好像不行,不知道为什么 ???????? set /A myval=10 set /A myval=myval"%"3 echo %myval% //显示确为0
o(∩_∩)o...哈哈,问题解决喽,纪念下2008.5.8
取余运算符需要用两个%, 即%%
set /A myval=10 set /A myval=myval%%3 echo %myval% //显示确为1
%CD% - 扩展到当前目录字符串。 %DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。 %TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。 %RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。