找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29080|回复: 6

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

[复制链接]
发表于 2007-10-25 22:21:57 | 显示全部楼层 |阅读模式
批处理简单获取字符串的字节数
  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:55 | 显示全部楼层
如何删除本帖?
[此贴子已经被作者于2007-10-26 14:03:11编辑过]

发表于 2007-10-28 15:26:18 | 显示全部楼层
呵呵,这代码怎么看啊```
再说,这代码有不准确的地方...判断不了全角字符..
发表于 2007-10-28 15:32:05 | 显示全部楼层
呵呵,虽然判断不了 全角字符,但是对于普通的 汉字 和 E文却可以“识别”
当写一些简单的程序的时候(如,曾经写过的,进程端口查询,在那个里面,这个就有大作用了,呵呵,PS:个人喜欢程序的整体性,能用一个批处理完成的,就会尽量用一个批处理文件完成...)
发表于 2009-5-9 16:24:50 | 显示全部楼层
修正字符串大于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
复制代码
发表于 2009-5-9 16:35:07 | 显示全部楼层
这样岂不是更好?
  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
复制代码
发表于 2011-6-16 12:17:20 | 显示全部楼层
切换到chcp 437代码页下,一个中文字符成了两个字符;求字节数等价于求字符个数,用strlen函数

话说,这么久了,我们才意识到代码页的本质,计算机基础知识甚是贫乏。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:58 , Processed in 0.016226 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表