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

[文本处理] [已解决]批处理数值比较出错

  1. @echo
  2. setlocal EnableDelayedExpansion
  3. color 0a
  4. set a=
  5. set/p a=请将文件拖入:
  6. for %%i in (%a%) do set /a c=%%~zi/1024
  7. echo 文件大小:%c%KB
  8. set b=
  9. set/p b=请设定分割后文件大小(KB):
  10. set /a e=%b%*1024
  11. set /a f=%c%/%b%
  12. echo %e%
  13. echo 以%b%KB分割后,您将得到%f%个文件。
  14. pause
  15. set d=1
  16. for %%i in (%a%) do set wjm=%%~ni
  17. for /f "delims=" %%j in (%a%) do (
  18. echo %%j>>%wjm%!d!.txt
  19. for %%k in (%wjm%!d!.txt) do if %%~zk GEQ %e% set /a d+=1
  20. )
  21. pause
复制代码
谢谢1楼的同志 根据1楼的提示 稍微改了下代码
问题已解决

[ 本帖最后由 jcy0307 于 2010-5-16 21:41 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

if "%~zk" GEQ "81920" set /a d+=1改成if %~zk GEQ 81920 set /a d+=1
把引号都去掉,作运算比较时,不能用引号引起来!
如果使用引号,必须使被比较的两个数字位数相同,不同时在前面补齐0,然后执行字符比较

if 语法:如果 string1string2 都由所有的数字组成,那么字符串将被转换为数字并且将执行数字比较。
也就是说,如果 string1string2 中有了引号,那么将不执行数字比较,而是执行字符比较。
在字符比较中,1234567890是比81920小的。只有执行数字比较,1234567890才比81920大。
在字符比较中,9是比81920大的。只有执行数字比较,9才比81920小。

[ 本帖最后由 hanyeguxing 于 2010-5-16 13:30 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

完成后请将标题前加 [已解决]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

领导电脑坏了 催我赶紧过去 所以........

TOP

返回列表