|
smileseeker
中级用户
  
积分 316
发帖 83
注册 2005-3-1
状态 离线
|
『楼 主』:
[已结]请教如何将字符转换成数字的问题
使用 LLM 解释/回答一下
如有:
0005
0020
0036
0303
如何将以上各个字符串转换成
5
20
36
303
平台:WINXP
Last edited by willsort on 2006-4-10 at 12:46 ]
|
|
2006-4-9 12:40 |
|
|
chenhui530
高级用户
   
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
set a=0005
set /a b=%a%+0
echo %b%
set c=0020
set /a d=%c%+0
echo %d%
set e=0036
set /a f=%e%+0
echo %f%
set g=0303
set /a h=%g%+0
echo %h%
|

http://www.msfans.net/bbs/ |
|
2006-4-9 13:27 |
|
|
smileseeker
中级用户
  
积分 316
发帖 83
注册 2005-3-1
状态 离线
|
|
2006-4-9 17:10 |
|
|
smileseeker
中级用户
  
积分 316
发帖 83
注册 2005-3-1
状态 离线
|
|
2006-4-9 17:31 |
|
|
chenhui530
高级用户
   
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
其实还可以这样的%a:0=%
比如
set a=0008
set b=%a:0=%
echo %b%
|

http://www.msfans.net/bbs/ |
|
2006-4-9 18:14 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
Re chenhui530:
set b=%a:0=% 仍然存在问题,比如对 0020 的处理。
对于长度固定为4的数字串,可以考虑以下方案:
set n=0020
set /a n=1%n%-10000
|

※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2006-4-9 18:42 |
|
|
chenhui530
高级用户
   
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
|
2006-4-9 19:06 |
|
|
smileseeker
中级用户
  
积分 316
发帖 83
注册 2005-3-1
状态 离线
|
|
2006-4-9 19:16 |
|
|
doscc
中级用户
  
积分 256
发帖 93
注册 2006-3-26 来自 广东
状态 离线
|
|
2006-4-10 11:17 |
|
|
kcdsw
中级用户
  
积分 404
发帖 179
注册 2006-3-30
状态 离线
|
『第 10 楼』:
别急着结啊,我这还有问题呢
使用 LLM 解释/回答一下
echo ----------------------------执行信息----------------------------
For %%a in (*.pdf) do call :name "%%a"
echo ----------------------------------------------------------------
echo 执行完毕,按任意键退出
pause >nul
exit
:name
set name="%~n1"
set name=%name:~-5%
if %name:~0,1%==0 set /a name=1%name%-10000
rename %1 %name%.pdf
echo %~n1.pdf 改名为 %name%.pdf
goto :eof
这个就可以用了,但是还有点小问题没搞定呢
希望大家给点思路
我的文件都是四位数字前面还有字符的 比如 20060410190040_ps_p0040.pdf
或者 农电全文最新_ps_p0021.pdf
执行的时候如果说这个文件主名本身不够4个字符的时候就会出错(因为我已经执行过一次,执行过的文件主名都不到4位了,它执行到set name=%name:~-5%)的时候就出错了
Last edited by kcdsw on 2006-4-10 at 20:27 ]
|
|
2006-4-10 20:23 |
|
|
无奈何
荣誉版主
      
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
TO: kcdsw
可以尝试下面的代码.
- @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:*_=%
- set name=%name:*_=%
- ::以下循环可以删除前导字母和零
- :loop
- set m=%name:~0,1%
- if "%m%" LEQ "9" (
- if "%m%" GTR "0" (
- echo rename %1 "%name%"
- rename %1 "%name%" >nul
- goto :EOF
- )
- )
- set name=%name:~1%
- goto loop
- goto :EOF
-=代码着色 BY:无奈何=-
根据 willsort 兄的提醒修正了一下,请注意第三行与 kcdsw 兄原帖的区别。
Last edited by 无奈何 on 2006-4-14 at 19:04 ]
|

☆开始\运行 (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-10 23:47 |
|
|
kcdsw
中级用户
  
积分 404
发帖 179
注册 2006-3-30
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
呵呵 首先谢谢无奈何兄
不过我这里的文件有个特点,后面都是四位的数字,而前面的字符不定有可能有2个或者3个以上的下划线
唯一能摸到规律的就是后四位数字.
pdf是与页面相关的,每个文档是一页,每个数字是与其相关的页码
一般书不会超过9999页(至少我这里没有),所以没考虑10000页及其上的页面的容错
刚用无奈何兄写的pdf大概测试了一下,存在一个问题 文件名会被改错掉
|
|
2006-4-11 13:12 |
|
|
xuantian
高级用户
   
积分 587
发帖 282
注册 2006-4-10
状态 离线
|
|
2006-4-11 15:49 |
|
|
kcdsw
中级用户
  
积分 404
发帖 179
注册 2006-3-30
状态 离线
|
|
2006-4-11 19:51 |
|
|
GOTOmsdos
铂金会员
       C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
|
2006-4-11 21:21 |
|