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

【练习-007】批处理去除指定字符前所有的0

[复制链接]
发表于 2011-9-4 09:01:50 | 显示全部楼层
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (1.txt) do (
set a=%%i
call :sta
)
pause
:sta
set a=!a:0a=a!
echo !a!|findstr "0a">nul &&goto sta
echo !a!
goto :eof
发表于 2011-9-4 09:03:44 | 显示全部楼层
出错了
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (1.txt) do (
  4. set a=%%i
  5. call :sta
  6. )
  7. pause
  8. :sta
  9. set a=!a:0a=a!
  10. echo !a!|findstr "0a">nul &&goto sta
  11. echo !a!
  12. goto :eof

  13.   
复制代码
发表于 2011-9-4 18:58:14 | 显示全部楼层
  1. gawk "gsub(/^0*/,"")" 1.txt
复制代码
发表于 2011-12-21 16:25:29 | 显示全部楼层
回复 53# wangyunxiang


    这是大家共同的梦想,可惜梦想就是梦想...
发表于 2012-5-8 16:18:17 | 显示全部楼层
本帖最后由 Taurus 于 2012-5-8 16:28 编辑

我直接用string不用1.txt了
思路該是本帖未有的
@echo off
set a=00000000000acb0hfjfkflx000000000000000000000000000000000
set a=%a:0= %&call :a %%a%%$&call set/p=%%a:~0,-1%%
:a
set a=%*&call set a=%%a: =0%%
发表于 2012-5-12 12:25:24 | 显示全部楼层
本帖最后由 lvsehuaxue 于 2012-5-12 12:31 编辑

如果一行中含有多个a的话,9楼也不通用

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%. in (a.txt) do (
  3.    set "str=%%."
  4.    set "str1=!str:a= !"
  5.    for %%i in (!str1!) do set "var=%%i"
  6.    call set "str=%%str:!var!=%%
  7.    set "str=!str:0=!"
  8.    echo !str!!var!
  9. )
  10. pause
复制代码
发表于 2012-7-5 17:05:23 | 显示全部楼层
本帖最后由 yashuer 于 2012-7-5 17:06 编辑

请教各位大大:
为什么用awk不能完成了?
没看到上面的gawk的代码。似乎在awk中找不到分组匹配的元字符
发表于 2012-10-17 12:07:52 | 显示全部楼层

  1. @echo off & setlocal enabledelayedexpansion
  2. ::去掉任意字符前的所有0
  3. set x=a
  4. for /f "tokens=1 delims=:" %%i in ('findstr /n "::data" "%~fs0"') do set data=%%i
  5. for /f "skip=%data% delims=" %%i in (%~fs0) do (
  6.         set str=%%i
  7.         call :qu0 !str:%x%=a !
  8. )
  9. pause
  10. goto :eof

  11. :qu0
  12. set a=%1
  13. echo %a:0=%%2
  14. goto :eof

  15. ::data
  16. 0000acb0h
  17. 0b0c00a000s
  18. 0000h00ga00
  19. a0000000
复制代码
发表于 2014-10-5 20:03:50 | 显示全部楼层
  1. @echo off
  2. set str=0000acb0h
  3. :: 提取第一行A前的4个0
  4. set var=%str:~0,4%
  5. echo %str:~0,4%
  6. @echo off
  7. set str=0b0c00a000s
  8. :: 提取第二行B前面的一个0
  9. set var=%str:~0,1%
  10. :: 提取第二行C前面的一个0
  11. set var=%str:~-9,1%
  12. :: 提取A前面的二个0
  13. set var=%str:~-7,2
  14. echo %str:~0,1%
  15. echo %str:~-9,1%
  16. echo %str:~-7,2%
  17. @echo off
  18. set str=0000h00ga00
  19. :: 提取H前面的4个0
  20. set var=%str:~0,4%
  21. :: 提取G前面的二个0
  22. set var=%str:~-6,2%
  23. echo %str:~0,4%
  24. echo %str:~-6,2%
  25. @echo off
  26. set str=a0000000
  27. echo %str%
  28. echo...
  29. echo..
  30. echo.
  31. echo 这个不用提取吧...
  32. pause
复制代码
发表于 2015-10-2 22:58:53 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (1.txt) do (
  3.     set a=&set n=
  4.     set "j=%%a"
  5.     for /l %%b in (0,1,50) do (
  6.         set k=!j:~%%b,1!
  7.         if !k!==a set n=1
  8.         if defined n (
  9.            set a=!a!!k!
  10.         ) else (
  11.           if not "!k!"=="0" set a=!a!!k!
  12.         )
  13.   )
  14. echo;!a!
  15. )
  16. pause
复制代码
发表于 2015-10-3 00:35:51 | 显示全部楼层
本帖最后由 cjiabing 于 2015-10-3 00:40 编辑
  1. @echo off
  2. for /f "tokens=1* delims=a" %%a in (1.txt) do if "%%b" neq "" (for /f "tokens=1,2* delims=0" %%i in ("%%aa") do echo %%i%%j%%k%%b) else echo a%%a
  3. pause
复制代码

测试文本
  1. 0000acb0h
  2. 0b0c00a000s
  3. 0000h00ga00
  4. a0000000
  5. 0000acb0a0h
  6. 0ab0c00a000s
  7. 0000h00ga00
  8. 00a000a0000
复制代码

结果
  1. acb0h
  2. bca000s
  3. hga00
  4. a0000000
  5. acb0a0h
  6. ab0c00a000s
  7. hga00
  8. a000a0000
复制代码
发表于 2021-3-28 13:54:16 | 显示全部楼层
不太完善
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (1.txt) do (
  4.     set str=%%i
  5.     set str=!str:a=#a!
  6.     for /f "tokens=1* delims=a" %%a in ("!str!") do (
  7.         set str1=%%a
  8.         set str1=!str1:0=!
  9.         set str1=!str1:#=!
  10.         set str2=%%b
  11.         set str2=a!str2:#=!
  12.         echo,!str1!!str2!
  13.     )
  14. )
  15. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:18 , Processed in 0.008703 second(s), 6 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表