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

[文本处理] 批处理获取汉英混合字符串的字节

批处理简单获取字符串的字节数
  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 14:03:11编辑过]


技术问题请到论坛发帖求助!

TOP

呵呵,这代码怎么看啊```
再说,这代码有不准确的地方...判断不了全角字符..
Software is like sex: it's better when it's free..!

TOP

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

TOP

修正字符串大于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
复制代码
(*^_^*)

TOP

这样岂不是更好?
  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
复制代码
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

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

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

TOP

返回列表