标题: [文件操作] [已解决] 批处理重命名文件时为何提示数字常数错误? [打印本页]
作者: guaiwu 时间: 2011-8-25 11:54 标题: [已解决] 批处理重命名文件时为何提示数字常数错误?
本帖最后由 guaiwu 于 2011-8-30 15:04 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f %%i in ('dir *.txt /b /o:n') do (
- set /a a=%%~ni
- rename %%i !a!.txt
- )
- pause
复制代码
在这个bat文件的当前文件我有9个txt
分别是:01.txt、02.txt、03.txt、04.txt、05.txt、06.txt、07.txt、08.txt、09.txt
我试过了,为什么set /a a=%%~ni到了08.txt文件就不执行,报错了
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
请按任意键继续. . .
求助
作者: ArdentMan 时间: 2011-8-25 11:57
改为Set /A a=0x%%~ni
作者: guaiwu 时间: 2011-8-25 12:58
回复 3# else
貌似你改了你这段话不行哦。
作者: guaiwu 时间: 2011-8-25 12:59
回复 2# ArdentMan
不能理解set! 能不能讲解一下、
作者: sxw 时间: 2011-8-25 13:04
是set a=%%~ni吧?set /a是计算求值表达式啊,,这里不是设置变量吗?
作者: guaiwu 时间: 2011-8-25 13:25
回复 6# sxw
问题不是不能定义变量,而是只能处理到07.txt。
08.txt处理不了
作者: Hello123World 时间: 2011-8-25 13:34
复制代码
对变量赋值直接用set即可,不用加/a 参数。
Set /a 对于以0开头的数字,视之为8进制数。- @Echo Off
- @echo off
- setlocal enabledelayedexpansion
- for /f %%i in ('dir *.txt /b /o:n') do (
- set a=%%~ni
- rename %%i !a!.txt
- )
- Pause>Nul
复制代码
你的代码逻辑上也有错误,如同把 01.txt 重命名为01.txt,依次类推……
作者: 545810831 时间: 2011-8-25 16:36
他的意思是不要数字开头为0文件名- @Echo Off
- @echo off
- setlocal enabledelayedexpansion
- for /f %%i in ('dir *.txt /b /o:n') do (
- set a=%%~ni
- set a=!a:~1!
- rename %%i !a!.txt
- )
- Pause>Nul
复制代码
作者: guaiwu 时间: 2011-8-26 13:15
回复 8# Hello123World
你误会我的意思了,我想要的 是把"01"字符串转换成可以计算的数值。 所以我才在set 上加了/a。 但是他只能读到八进制。
作者: CUer 时间: 2011-8-30 17:19
回复 10# guaiwu - @echo off
- setlocal enabledelayedexpansion
- for /f %%i in ('dir /b /o:n *.txt') do (
- set /a a=1%%~ni%%10
- ren %%i !a!.txt
- )
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |