[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理如何将0010变成10?

我本来是想将0001,,0002,0003...0010...1010...等用批处理for变成1,2,3...10...1010怎么写代码啊?

这些是文件夹名就是:
for /d %%a in (*) do (
代码
)

TOP

我想了好久了!用set n=%m:0=%又会把0010变成了1
用for /f "delims=123456789 tokens=1,*"又会把0010变成了0
哎!!!求教啊!!!sos!!!

TOP

10001-10000=1
10010-10000=10

TOP

  1. for /f "delims=0 tokens=*" %%a in ("0010")do echo %%a
复制代码

TOP

常用的delims法:
  1. for /f "tokens=*delims=0" %%a in ("0010") do echo %%a
复制代码
处理固定位数的数字时的方法:
  1. set str=0010
  2. set /a n=1%str%-10000
  3. ::改进算法后可以兼容大数,但是代码太冗长,不实用
复制代码
当数值于十的时候可以:
  1. set str=0010
  2. set /a n=0x%str%
  3. ::改进算法后同样可以兼容大数,但是代码太冗长,不实用
复制代码
for /l+if:
  1. set str=0010
  2. for /l %%a in (0 1 10) do if "!str:~%%a,1!" gtr "0" echo;!str:~%%a!
复制代码

TOP

  1. @echo off
  2. for /f "tokens=* delims=0" %%i in (d.txt) do echo %%i
复制代码

TOP

来个低效的
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p c=请输入数字
  3. set n=%c%
  4. for /l %%a in (1 1 9) do set n=!n:%%a=0!
  5. set /a c=1%c%-1%n%
  6. echo %c%
复制代码

TOP

我对这里的
for /f "tokens=* delims=0" %%i in (d.txt) do echo %%i
表示不理解。像0010由于tokens=*为什么会有这样的效果表示不理解
我看过站里的那个《for入门到精通》里面没有直接在tokens加 * 号的
能详细讲解一下tokens=*吗

TOP

tokens=*会将参数设为从第一个非分隔符字符开始的其后所有字符串,所以当分隔符为0时,tokens=*能去除字符串头部的所有0(如果存在的话)

TOP

本帖最后由 523066680 于 2011-6-16 14:56 编辑
  1. @echo off
  2. set n=00010
  3. set str=#%n%
  4. set str=%str:#000=%
  5. set str=%str:#00=%
  6. set str=%str:#0=%
  7. echo %str:#=%
  8. pause
复制代码
如果用pl的话s/^0+//; 快一点

TOP

本帖最后由 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

TOP

你们都把问题复杂化了!

set  /a a=0001
set /a b="0011"
set a
set b

TOP

你们都把问题复杂化了!

set  /a a=0001
set /a b="0011"
set a
set b
applba 发表于 2011-6-16 17:56

假如...
set /a a = 00009

TOP

14# tmplinshi

看来无解了

TOP

返回列表