[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
适用于1-99行的:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=一 二 三 四 五 六 七 八 九 十"
  3. for %%i in (%str%) do set /a n+=1&set "_!n!=%%i"
  4. for /f "tokens=1* delims=:" %%i in ('findstr /n .* a.txt') do (
  5.      set "a=%%i"
  6.      if "!a:~1!" equ "" (
  7.         echo !_%%i!行 %%j
  8.         ) else (
  9.         call,echo %%_!a:~,1!%%十%%_!a:~1!%%行 %%j
  10.      )
  11. )
  12. pause>nul
复制代码

同理可写适于1-999行,1-9999行,1-9.........9行,只要再设置个变量set "var=十 百 千 万...."
1

评分人数

    • wxcute: 管理员也来拿分吗 -_-'''PB + 1
***共同提高***

TOP

1-99999行的:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=一 二 三 四 五 六 七 八 九"&set "var=万千百十零"
  3. for %%i in (%str%) do set /a n+=1&set "_!n!=%%i"
  4. for /f "tokens=1* delims=:" %%i in ('findstr /n .* a.txt') do (
  5.      set "a=%%i"&call :lp
  6.      call,set "b=%%var:~-!m!%%"&set "m=0"
  7.      set "a=%%i"
  8.      call :loop %%i "%%j"
  9. )
  10. pause>nul&goto :eof
  11. :lp
  12. set "a=%a:~1%"&set /a m+=1
  13. if defined a goto lp
  14. goto :eof
  15. :loop
  16. if %1 lss 10 (
  17.   call,set "string=%string%零%%_!a:~,1!%%"
  18.   ) else (
  19.   if %a:~,1% equ 0 (
  20.      set "string=%string%零"
  21.      ) else (
  22.      if "%b:~,1%" neq "零" (
  23.         call,set "string=%string%%%_!a:~,1!%%%b:~,1%"
  24.         ) else (
  25.         call,set "string=%string%%%_!a:~,1!%%"
  26.      )
  27.    )
  28. )
  29. set "b=%b:~1%"&set "a=%a:~1%"
  30. if defined a goto loop
  31. set "string=%string:零零零=零%"
  32. set "string=%string:零零=零%"
  33. if "%string:~-1%" equ "零" set "string=%string:~,-1%
  34. set "string=%string%行         "
  35. echo %string:~,9% %~2&set "string="
复制代码
测试文本a.txt由下面的代码生成
  1. @echo off
  2. for /l %%i in (1,1,99999) do echo %%i>>a.txt
复制代码
1

评分人数

    • wxcute: 这个好,就是会忽略空格及后面内容。PB + 3
***共同提高***

TOP

真的是如此,查找了原因,原来是在call中出的问题,当%%j中含有空格时要用双引号引
起,并在后面输出时将引号去掉:call :loop %%i "%%j"   echo %string:~,9% %~2
ps:兄弟不用给我加分,呵呵。
***共同提高***

TOP

我来帮楼上的修改下(看来你的测试文本只有5行):
  1. @echo off&setlocal enabledelayedexpansion
  2. set "hh=一二三四五"&set /a n=0
  3. for /f "delims=" %%k in (a.txt) do (
  4.      call,echo %%hh:~!n!,1%% %%k
  5.      set /a n+=1
  6. )
  7. pause>nul
复制代码
***共同提高***

TOP

返回列表