中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]请教如何将字符转换成数字的问题
« [1] [2] »
作者:
标题: [已结]请教如何将字符转换成数字的问题 上一主题 | 下一主题
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 16 楼』:  

kcdsw 兄能否提供一下出错的文件列表.
用批处理来完成复杂的文件重命名,只是讨论CMD下批处理的字符处理问题,其实效率很低,也无法解决一些特殊字符的应用限制.
如果只是纯粹的应用,用来解决问题的话,第三方的工具是个不错的选择.推荐一款命令行下的支持正则表达式的重命名工具 bkren 下载地址:http://www.orbit.org/renamer/
解决你的问题应该很轻松.



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-4-11 21:53
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 17 楼』:  呵呵 谢谢你啊~~

我把图贴上了

另外我把lss改成leq了

问题应该出在这里了

[ Last edited by kcdsw on 2006-4-12 at 12:48 ]

附件 1: 新建 BMP 图像.JPG (2006-4-12 12:45, 64.98 K, 下载附件所需积分 1 点 ,下载次数: 9)


2006-4-12 12:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 18 楼』:  

LSS 确实该改为 LEQ,我大意了,改一下原帖.



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-4-12 19:47
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 19 楼』:  

Re 无奈何:

      记得以前与兄就 for文件遍历中出现的重复操作问题 曾有讨论[1],那时得出的结论是使用for/f分析dir结果的静态分析方案,这样就避免了很多问题,例如若要实现给文件名添加动态前缀或后缀的代码,使用非静态算法便很麻烦,很难对已操作文件进行排除。

[1] 已结:[转帖求助]一个批量命名的批处理
http://www.cn-dos.net/forum/viewthread.php?tid=18108

[ Last edited by willsort on 2006-4-14 at 18:07 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-4-14 18:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 20 楼』:  

谢谢 willsort 兄的提醒。
最近因为时间问题,来的少了一些。
由于只是一味关注本帖提出的字符处理需求,没有过多的考虑主循环调用的部分,所以保持了 kcdsw 兄的程序前半部分原样,也没有做详细的测试。再修正一下。



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-4-14 19:01
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 21 楼』:  

呵呵  刚才我正好在调试 发现会把第一次重命名了的文件再进for中执行一次,正发愁呢忽然看到你们的回复  真是太感谢了

另外我把无奈何兄的代码小改了一下

echo 信息放在了 rename语句的后面  而且是成功了才执行 呵呵

谢谢斑竹和无奈何兄
@echo off
echo ----------------------------执行信息----------------------------
for /f "delims=" %%a in ('dir /b *.pdf') do call :name "%%a"
echo ----------------------------------------------------------------
echo 执行完毕,按任意键退出
pause >nul
exit

:name
set name=%~1
::以下两句删除下划线之前的字符
set name=%name:*_p=%
set name=%name:*_p=%


::以下循环可以删除前导字母和零
:loop
set m=%name:~0,1%
if "%m%" LEQ "9" (
if "%m%" GTR "0" (
rename %1 "%name%" 2>nul &&echo %1更名为"%name%" ||echo 无法重名文件%1,存在同名文件%name%或者文件已打开

goto :EOF
)
)
set name=%name:~1%
goto loop

goto :EOF
[ Last edited by kcdsw on 2006-4-14 at 20:57 ]

2006-4-14 20:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: