本人刚学批处理不久,有很多的疑问一直没得到解决,希望大家能帮帮我。在此谢谢大家的阅读!
写blog的时候字符限制在40000,我把文字先复制到记事本里(先去除链接和字体颜色类的设置),再复制word中统计字符,感觉很麻烦,而且不准确。
在word中统计出 28990个字符(包括空格),为什么在blog里还是超出字数限制。我就想做一个批处理直接统计 记事本的字符,看看问题出在哪。
下面一共有40个字符
代码暂时只写到提取出每一行,提取到每一个字(一个汉字算2个字符)- @echo off
- setlocal enabledelayedexpansion
- set num=0
- echo 1234567890>note.txt
- echo qwertyuiop>>note.txt
- echo 批处理之家>>note.txt
- echo $@#$3e97,e>>note.txt
- for /f %%a in (note.txt) do (
- set line=%%a
- for /l %%i in (0,1,100) do (
- for /f "delims= tokens=1,2" %%a in ("!line:~ %%i,1!") do (
- echo %%a%%b>>note1.txt
- )
- )
- )
- for /f %%q in (note1.txt) do (
- set /a num+=1
- echo !num!
- )
- pause
复制代码 我的思路:(已完成项目用红色显示,未完成项目用黑色显示)
1,提取每一行 %%a
2,提取每一个字 %%a%%
3, 总结字数
4,判断是否包括汉字,汉字部分X2,表示2字符
5,总结字符
限于水平,决定先把论坛内教程都看懂再回来琢磨。
最后引用下 bat吧主的“计算字符数” 供大家阅读
-
- @echo off
- set "FileName=%~1"
- if not exist "%FileName%" exit /b 1
- setlocal enabledelayedexpansion
- set /a "LineLength=0"
- set /a "n=0"
- echo 文件:%FileName%
- for /f "usebackq tokens=* delims=" %%i in ("%FileName%") do (
- call :Length "%%i" "LineLength"
- set /a "n+=1"
- echo 第!n!行:!LineLength!。
- )
- if "!n!"=="0" (echo 读取出错。) else (echo 完成,共!n!行。)
- pause>nul
- exit /b 0
-
- :Length
- setlocal enabledelayedexpansion&set /a "_len_=-1"
- set "__str=%~1"
- :__Len_FUNCTION
- set /a "_len_+=1"
- for /f %%i in ("%_len_%") do if not "!__str:~%%i,1!"=="" goto :__Len_FUNCTION
- Endlocal&set "%~2=%_len_%"&goto :EOF
-
- goto :eof
复制代码
[ 本帖最后由 rsent 于 2011-2-22 02:15 编辑 ] |