标题: [新手练习]批处理变量的字节大小 [打印本页]
作者: defanive 时间: 2009-1-9 23:26 标题: [新手练习]批处理变量的字节大小
计算出输入变量的字节数,不是变量长度,而是字节数。英文半角等占1字节,中文全角等占2字节
目的:掌握 set /p 和 for 的用法
要求:等待用户输入,并计算出输入变量的字节数,显示出来。暂不考虑特殊字符过滤问题。
评分:代码可读性 1 分;
首个新方法 7 分,第二个 6 分,依次类推,最少 2 分;
一人可多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。
(请版主帮忙评分)
参考答案:(拖拽代码框即可呈现)
@echo off
set /p a=请输入:
echo b%a%b>a.txt
for /f %%a in ("a.txt") do set /a size=%%~za-4
echo %size%
del /q a.txt
pause>nul
作者: tireless 时间: 2009-1-10 00:37
- @echo off
- :bgn
- set /p str=字符串:
- for /f "skip=1 delims=:" %%a in ('^(echo.%str%^&echo.^)^|findstr /o .') do (
- set /a Bytes=%%a-3
- )
- echo 字节数: %Bytes%
- echo. & goto bgn
复制代码
作者: tireless 时间: 2009-1-10 00:53 标题: 能处理特殊符号:
- @echo off
- :bgn
- set /p input=字符串:
- call set/p="%%input%%"<nul>%temp%\a.txt
- for %%a in (%temp%\a.txt) do echo 字节数: %%~za
- echo. & goto bgn
复制代码
后发现有些特殊字符不能处理,如 "<,可修改成:- @echo off&setlocal enabledelayedexpansion
- :bgn
- set /p input=字符串:
- set/p="!input!"<nul>%temp%\a.txt
- for %%a in (%temp%\a.txt) do echo 字节数: %%~za
- echo. & goto bgn
复制代码
[ 本帖最后由 tireless 于 2009-1-16 15:12 编辑 ]
作者: defanive 时间: 2009-1-10 11:24
另一种过滤特殊字符的思路:用set的%PATH:str1=str2%替换功能把特殊字符替换成普通字符(例如字母),这样总大小还是不变,但可以正常echo >
作者: rat 时间: 2009-1-10 16:04
http://www.cn-dos.net/forum/viewthread.php?tid=45097
作者: myzwd 时间: 2009-2-28 18:47 标题: 回复 1楼 的帖子
- @echo off
- cls
- set size=0
-
- echo ╭︿︿︿╮
- echo {/ o o /}
- echo ( (oo) )
- echo ︶ ︶︶
-
- @echo off
- set /p var=input
- set var > var.txt
- for /f %%i in ("var.txt") do set /a "size=%%~zi-6"
- echo %size%
- set size=
- del var.txt
- pause
复制代码
看了楼主的答案,模仿了一个,但是问题出来了,为什么我这么写是 -6而不是-4.
[ 本帖最后由 myzwd 于 2009-2-28 18:51 编辑 ]
作者: Batcher 时间: 2009-2-28 19:04 标题: 回复 6楼 的帖子
把倒数第二行注释掉,就会发现你的变量长度和楼主的不同。
作者: zxd11097 时间: 2011-11-1 15:13
哎。新手题各位大神就别来凑热闹了。搞得小弟无法下叉。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |