第1个回答 2008-11-21
@echo off
setlocal enabledelayedexpansion
for /f %%a in (a.txt) do (
set "str1=%%a"
set "str1=!str1:54k= !
for /f %%h in ("!str1!") do (
set "str2=%%h"
echo !str2:~-16!
)
)>>b.txt
pause
不用楼上那么麻烦的。我的处理方式如上!
把结果保存到b.txt本回答被提问者采纳
第2个回答 2008-11-30
在批处理中要分隔字符串的话,可以用for命令的delims来设置,没有直接以一个字符串来做分隔的,不过你可以先用set命令把字符串替换成一个自己自定义的分隔符,默认系统的分隔符就是空格,你也可以直接换成空格。hackate给你的答案就是用空格做为分隔符。如果你的结果中刚好有空格的话,那你就要自定义分隔符了。思路的话,也就是hackate给你的那个。
第3个回答 2008-11-21
@echo off
setlocal enabledelayedexpansion
call:main
endlocal
echo.
pause>con
goto :eof
:main
set "p=54k"
set "length=3"
(
for /f "delims=" %%i in ('type a.txt') do (
set "line=%%i"
call:findstr line p !length!
if !answer! geq 16 (
set /a "start=answer-16"
for %%i in (!start!) do (echo !line:~%%i,16!)
)
)
)>b.txt
goto :eof
:findstr
set /a "num1=0"
set /a "step=256"
:1
set /a "num2=num1+step-1"
for /l %%i in (!num1!,1,!num2!) do (
if "!%~1:~%%i,%~3!"=="!%~2!" set "answer=%%i" & goto :eof
if "!%~1:~%%i,1!"=="" set "answer=-1" & goto :eof
)
set /a "num1=num1+step"
goto 1
第4个回答 2008-11-23
hackate高手~帮你顶一个~呵呵!
~~以后要多多向你学习了~~
这么精悍的代码,LZ应该加分啊!
第5个回答 2008-11-21
你想要哪个54K前面的内容呀?用substring函数