怎么用BAT批处理 进行算术运算 得到一个用变量表示的数值,而使用它?

dianyancao 2009-11-15 05:10:50
批处理:
set /a a=32-2
echo %a%
pause
如上,可以输出变量a的值

但是如何在下面的命令中使用变量a呢?
For /L %%1 in (32,1,60) do set /a a=%%1-2 &echo %%a &pause &rename "D:\Record_MPEG2\录像%%1.MPG" %%a.mpg

执行该语句后,显示:
C:\Documents and Settings\Administrator\桌面>For /L %1 in (32 1 60) do set /a a=
%1-2 & echo %a & pause & rename "D:\Record_MPEG2\录像%1.MPG" %a.mpg

C:\Documents and Settings\Administrator\桌面>set /a a=32-2 & echo %a & pause
& rename "D:\Record_MPEG2\录像32.MPG" %a.mpg
%a
请按任意键继续. . .

上面无法用变量名%%a使用a的值,要怎样使用变量a的值呢?
...全文
2249 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dianyancao 2009-11-16
  • 打赏
  • 举报
回复
谢谢ljc007 BATMaster,我再问两个问题哈。
[code=CMD Help]在 SET 命令中添加了两个新命令行开关:

SET /A expression
SET /P variable=[promptString]

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:

() - 分组
! ~ - - 一元运算符
---------------------------------------------------------
C:\>setlocal /?
开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后
所做的环境改动只限于批处理文件。要还原原先的设置,必须执
行 ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个
尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。[/code]

什么是 一元运算符?


达到批处理文件结尾时,对于该批处理文件的每个
已经被执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。
这样,对不?
ljc007 2009-11-15
  • 打赏
  • 举报
回复
test.bat

[code=BatchFile]@echo off
setlocal enabledelayedexpansion
for /l %%i in (32,1,60) do (
set /a a=%%i-2
echo !a!
pause
ren "D:\Record_MPEG2\录像%%i.MPG" !a!.mpg
)
[/code]

6,873

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧