Board logo

标题: [文本处理] [已解决]批处理数值比较出错 [打印本页]

作者: jcy0307    时间: 2010-5-16 12:37     标题: [已解决]批处理数值比较出错

  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 编辑 ]
作者: hanyeguxing    时间: 2010-5-16 13:03

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 编辑 ]
作者: hanyeguxing    时间: 2010-5-16 20:33

完成后请将标题前加 [已解决]
作者: jcy0307    时间: 2010-5-16 21:41

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2