Board logo

标题: [文本处理] 批处理获取汉英混合字符串的字节 [打印本页]

作者: BatHome    时间: 2007-10-25 22:21     标题: 批处理获取汉英混合字符串的字节

批处理简单获取字符串的字节数
  1. ::获取字符串的字节数
  2. ::code by youxi01@cmd_xp
  3. @echo off
  4. setlocal enabledelayedexpansion
  5. if "%1"=="" goto :help
  6. call :test "%~1"
  7. echo %1的字节有:%len%
  8. pause>nul
  9. :test
  10. set "var=%~1"
  11. for /l %%i in (0 1 200) do (
  12.    set "var_=!var:~%%i,1!"
  13.    if "!var_!"=="" goto :eof
  14.    if !var_! gtr Z (set /a len+=2) else set /a len+=1
  15. )
  16. goto :eof
  17. :help
  18. echo.&echo ==========================求字符串的字节数=================
  19. echo [使用格式]    %~nx0 "字符串"
  20. echo [使用示例]    %~nx0 "好人123"
  21. echo ============================--------=================================
  22. cmd /k
复制代码

作者: 随风    时间: 2007-10-26 13:55

如何删除本帖?

[此贴子已经被作者于2007-10-26 14:03:11编辑过]



作者: somebody    时间: 2007-10-28 15:26

呵呵,这代码怎么看啊```
再说,这代码有不准确的地方...判断不了全角字符..
作者: youxi01    时间: 2007-10-28 15:32

呵呵,虽然判断不了 全角字符,但是对于普通的 汉字 和 E文却可以“识别”
当写一些简单的程序的时候(如,曾经写过的,进程端口查询,在那个里面,这个就有大作用了,呵呵,PS:个人喜欢程序的整体性,能用一个批处理完成的,就会尽量用一个批处理文件完成...)
作者: keen    时间: 2009-5-9 16:24

修正字符串大于200后;修正连续使用本程序两次以上,len值计算错误,主要没有进行len变量清零。
修正楼主的代码:
  1. ::获取字符串的字节数
  2. ::code by youxi01@cmd_xp
  3. @echo off
  4. if "%1"=="/?" goto help
  5. if "%1"=="" goto :help
  6. call :test "%~1"
  7. echo %1的字节有:%len%
  8. :test
  9. set "var=%~1"&set len=0
  10. :lp
  11. set "var1=%var:~0,1%"
  12. if %var1% gtr Z (set /a len+=2) else set /a len+=1
  13. set "var=%var:~1%"
  14. if defined var goto lp
  15. goto :eof
  16. :help
  17. echo.&echo ==========================求字符串的字节数=================
  18. echo [使用格式]    %~nx0 "字符串"
  19. echo [使用示例]    %~nx0 "好人123"
  20. echo ============================--------=================================
  21. cmd /k
复制代码

作者: defanive    时间: 2009-5-9 16:35

这样岂不是更好?
  1. ::获取字符串的字节数
  2. ::code by Defanive
  3. @echo off
  4. setlocal enabledelayedexpansion
  5. if "%1"=="" goto :help
  6. call :test "%~1"
  7. echo %1的字节有:%len%
  8. pause>nul
  9. :test
  10. echo."%~1">"%temp%\lb.tmp"
  11. for /f %%a in ("%temp%\lb.tmp") do set /a len=%%~za-4
  12. del /f /q "%temp%\lb.tmp"
  13. goto :eof
  14. :help
  15. echo.&echo ==========================求字符串的字节数=================
  16. echo [使用格式]    %~nx0 "字符串"
  17. echo [使用示例]    %~nx0 "好人123"
  18. echo ============================--------=================================
  19. cmd /k
复制代码

作者: plp626    时间: 2011-6-16 12:17

切换到chcp 437代码页下,一个中文字符成了两个字符;求字节数等价于求字符个数,用strlen函数

话说,这么久了,我们才意识到代码页的本质,计算机基础知识甚是贫乏。




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