![Board logo](images/default/logo.gif)
标题: [文本处理] [已解决]批处理怎样计算字符串? [打印本页]
作者: er8852973 时间: 2011-4-11 11:47 标题: [已解决]批处理怎样计算字符串?
本帖最后由 er8852973 于 2011-4-12 23:03 编辑
- @echo off
- for /f "delims=" %%i in (hh.txt) do (
- set a=%%i
- for %%i in (0,1,8192) do (
- if not !a! =="" set b=!a:~%%i,1!&set c=%%i
- )
- echo !c!
- pause>nul
-
- )
- pause
复制代码
不知道错在哪里 执行后显示 !c!而不是显示每行的字符数 请指教
作者: terse 时间: 2011-4-11 11:54
本帖最后由 terse 于 2011-4-11 11:56 编辑
这里 !a! 不会空吧 另开启变量延迟
作者: hfg1977 时间: 2011-4-11 12:05
- @echo off
- setlocal enabledelayedexpansion&cls
- :start ============================================================
- for /f "delims=" %%a in (2.txt) do (
- call :getStrLen %%a
- echo !strlen!
- )
- :end ==============================================================
- endlocal&echo 按任意键退出&pause>nul
- ::(mode con cols=80 lines=25&color 07&CHCP 437&graftabl 936)>nul
- for /f "tokens=2" %%a in ('CHCP') do (if not "%%a"=="437" (color 07&CHCP 437&graftabl 936))>nul
- exit/b
- setlocal disabledelayedexpansion
- echo 退出...&ping/n 4 127.1>nul
- for /l %%a in (5,-1,0) do (set/p =退出... ^(%%a^)<nul&ping/n 2 127.1>nul)
- ::=======================MODE CODE==============================
- ::=======================获得字符串长度==============================
- ::返回值在中%strlen%
- :getStrLen mystr
- set "mystr=%~1"&set "strlen=0"
- if not defined mystr goto :eof
- for /l %%i in (0,1,8191) do (set strlen=%%i&if "!mystr:~%%i,1!"=="" (goto :eof))
- goto :eof
- ::==============END======获得字符串长度========== by hf-g ===========
- ::=======================END MODE===============================
复制代码
作者: hanyeguxing 时间: 2011-4-11 12:22
本帖最后由 hanyeguxing 于 2011-4-11 12:26 编辑
@echo off
这里加setlocal enableDelayedExpansion以开变量延迟
for /f "delims=" %%i in (hh.txt) do (
set a=%%i
推荐写成set "a=%%i"
for %%i in (0,1,8192) do (
外面已经用了%%i这里就不要使用相同的变量名了例如换成%%j 同时递归数列为for /l
if not !a! =="" set b=!a:~%%i,1!&set c=%%i
这里应写成if not "!a:~%%j,1!"=="" set c=%%j
)
echo !c!
pause>nul
)
pausu
应该是pause- @echo off
- setlocal enableDelayedExpansion
- for /f "delims=" %%i in (hh.txt) do (
- set "a=%%i"
- for /l %%j in (0,1,8192) do if not "!a:~%%j,1!"=="" set c=%%j
- echo !c!
- pause>nul
- )
- pause
复制代码
作者: er8852973 时间: 2011-4-11 13:53
@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%i in (hh.txt) do (
set a=%%i
for /l %%j in (0,1,8192) do (
if not !a! =="" set b=!a:~%%j,1!&set c=%%j
)
echo !c!
pause>nul
)
pausu
我想问大家 我上面的代码错在什么地方?
作者: terse 时间: 2011-4-11 14:05
5# er8852973
if not "!a:~%%j!" == "" set b=!a:~%%j,1!&set /a c=%%j+1
作者: er8852973 时间: 2011-4-11 14:17
6L的 我按照你的改动了 还是不行啊
@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%i in (hh.txt) do (
set a=%%i
for /l %%j in (0,1,8192) do (
if not !a:~%%j,1!=="" set b=!a:~%%j,1!&set/a c=%%j+1
)
echo !c!
pause>nul
)
pausu
作者: CrLf 时间: 2011-4-11 20:09
if not "!a:~%%j,1!"=="" ...
作者: er8852973 时间: 2011-4-12 23:02
谢谢 各位 解决了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |