标题: [数值计算] 批处理如何将0010变成10? [打印本页]
作者: BS0小陈 时间: 2011-6-16 13:23 标题: 批处理如何将0010变成10?
我本来是想将0001,,0002,0003...0010...1010...等用批处理for变成1,2,3...10...1010怎么写代码啊?
作者: BS0小陈 时间: 2011-6-16 13:24
这些是文件夹名就是:
for /d %%a in (*) do (
代码
)
作者: BS0小陈 时间: 2011-6-16 13:29
我想了好久了!用set n=%m:0=%又会把0010变成了1
用for /f "delims=123456789 tokens=1,*"又会把0010变成了0
哎!!!求教啊!!!sos!!!
作者: plp626 时间: 2011-6-16 13:32
10001-10000=1
10010-10000=10
作者: plp626 时间: 2011-6-16 13:36
- for /f "delims=0 tokens=*" %%a in ("0010")do echo %%a
复制代码
作者: CrLf 时间: 2011-6-16 13:39
常用的delims法:- for /f "tokens=*delims=0" %%a in ("0010") do echo %%a
复制代码
处理固定位数的数字时的方法:- set str=0010
- set /a n=1%str%-10000
- ::改进算法后可以兼容大数,但是代码太冗长,不实用
复制代码
当数值于十的时候可以:- set str=0010
- set /a n=0x%str%
- ::改进算法后同样可以兼容大数,但是代码太冗长,不实用
复制代码
for /l+if:- set str=0010
- for /l %%a in (0 1 10) do if "!str:~%%a,1!" gtr "0" echo;!str:~%%a!
复制代码
作者: lvsehuaxue 时间: 2011-6-16 13:41
- @echo off
- for /f "tokens=* delims=0" %%i in (d.txt) do echo %%i
复制代码
作者: CrLf 时间: 2011-6-16 13:49
来个低效的- @echo off&setlocal enabledelayedexpansion
- set /p c=请输入数字
- set n=%c%
- for /l %%a in (1 1 9) do set n=!n:%%a=0!
- set /a c=1%c%-1%n%
- echo %c%
复制代码
作者: BS0小陈 时间: 2011-6-16 14:01
我对这里的
for /f "tokens=* delims=0" %%i in (d.txt) do echo %%i
表示不理解。像0010由于tokens=*为什么会有这样的效果表示不理解
我看过站里的那个《for入门到精通》里面没有直接在tokens加 * 号的
能详细讲解一下tokens=*吗
作者: CrLf 时间: 2011-6-16 14:11
tokens=*会将参数设为从第一个非分隔符字符开始的其后所有字符串,所以当分隔符为0时,tokens=*能去除字符串头部的所有0(如果存在的话)
作者: 523066680 时间: 2011-6-16 14:55
本帖最后由 523066680 于 2011-6-16 14:56 编辑
- @echo off
- set n=00010
- set str=#%n%
- set str=%str:#000=%
- set str=%str:#00=%
- set str=%str:#0=%
- echo %str:#=%
- pause
复制代码
如果用pl的话s/^0+//; 快一点
作者: tmplinshi 时间: 2011-6-16 17:31
本帖最后由 tmplinshi 于 2011-6-16 17:51 编辑
tokens=* 表示剩余部分。
“分隔符”是不要的字符,用来把字符串分成多块。
例 1
for /f "delims=0 tokens=*" %%i in ("0001020304") do ...
则:
%%i=1020304
例 2
for /f "delims=0 tokens=2,*" %%i in ("0001020304") do ...
则:
%%i=2
%%j=304
作者: applba 时间: 2011-6-16 17:56
你们都把问题复杂化了!
set /a a=0001
set /a b="0011"
set a
set b
作者: tmplinshi 时间: 2011-6-16 17:58
你们都把问题复杂化了!
set /a a=0001
set /a b="0011"
set a
set b
applba 发表于 2011-6-16 17:56
假如...
set /a a = 00009
作者: applba 时间: 2011-6-16 18:04
14# tmplinshi
看来无解了
作者: BS0小陈 时间: 2011-6-16 20:52
谢谢!我懂了!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |