首页
社区
课程
招聘
[旧帖] [求助]bat脚本执行的一个奇怪问题(问题已经解决) 0.00雪花
发表于: 2015-7-13 22:31 1627

[旧帖] [求助]bat脚本执行的一个奇怪问题(问题已经解决) 0.00雪花

2015-7-13 22:31
1627
为了对文件进行重名名,我写了下面这段脚本。但是执行时,有时候正常,有时侯提示 ren %%i !random!!random!!NewName!  指令存在错误。出错时语句“set NewName=%OldName:~-15,15%”的执行结果是 “NewName=~-15,15”,说明没能正常截取字符。不知道为什么,希望有哪位大牛能指点一下!

for /d %%i in (*_dat) do (
set OldName=%%i
set NewName=%OldName:~-15,15%
setlocal enabledelayedexpansion
ren %%i !random!!random!!NewName!
setlocal disabledelayedexpansion
)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 8
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
解决方法:在“set NewName=%OldName:~-15,15%”加一句使用变量OldName的语句,例如“echo %OldName%”
可能原因:脚本解释器将for语句()内的所有语句作为单独一句进行解释处理,这样就出现类似c语言中包含自引用的复杂表达式“节点”的问题,导致最后表达式结果的不确定性。
2015-7-13 22:59
0
雪    币: 16386
活跃值: (1600)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这里全是高手。。。
2015-7-14 07:29
0
雪    币: 251
活跃值: (302)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
haha
2015-7-14 09:49
0
游客
登录 | 注册 方可回帖
返回
//