1,set A="17-5-5-1 8-2-2-4 17-10-4-4 9-8-3-1 3-2-5-3 21-7-1-2 15-9-1-3"
设置变量是写成set "A=17-5-5-1 8-2-2-4 17-10-4-4 9-8-3-1 3-2-5-3 21-7-1-2 15-9-1-3"
2,set B="24-5-3-1 10-5-3-4 28-5-1-2 3-2-5-3 21-7-1-2 7-10-4-4 25-5-4-4 32-1-5-3 31-3-5-3 25-7-1-2 12-2-4-1 3-2-5-1"
看不到你批处理中使用这个变量。。。
3,rem 把每串分行写进临时文本
for %%i in ("%a%") do (
set str=%%i
set str=!str:"=!
call echo %%str%% >>tmp_.txt
)
rem 设置s_kip等于X版Y行在homebook.txt的第多少行,设置t_ook为那一行的中文母本字符在那一行中文母本的位置的前一位
for /f "tokens=1,2,3,4 delims=-" %%i in (tmp_.txt) do (
尽量不要使用临时文件,这些可以直接写成
for %%h in (%A%) do for /f "tokens=1-4 delims=-" %%i in ("%%h") do (
4,set /a num1=%%i,num2=%%j,num3=%%k,num4=%%l 直接使用这些变量进行,不需要set
5,set /a s_kip=(num1-1)*14+num2+2
set /a t_ook=(num3-1)*4+num4-1
要写成set/a "s_kip=(%%i-1)*14+%%j+2"
6,for f "tokens=1,2* delims=:" %%a in ('findstr /n .* homebook.txt') do (
set numm=%%i 按照你的目的,这个时候应该是%%a吧?for /f。。。
7,if %s_kip% equ numm set str=%%c 既然下面都是面向str在处理,那么这些行都该是这个if的子句,那么就该应()括起来if "!s_kip!"=="%%a" (
8,for %%I in ("%str%") do set ( 既然上面已经set str=!str: =!了,那么变量str中就没有了空格,猜测也不会有其他分隔符,那么这个for 也就没太大的必要了,而且do set 是为什么?
9,上边是%%I,这里是%%i?这里的变量名是区分大小写的。。- @echo off&setlocal enabledelayedexpansion
- set "A=17-5-5-1 8-2-2-4 17-10-4-4 9-8-3-1 3-2-5-3 21-7-1-2 15-9-1-3"
- set "B=24-5-3-1 10-5-3-4 28-5-1-2 3-2-5-3 21-7-1-2 7-10-4-4 25-5-4-4 32-1-5-3 31-3-5-3 25-7-1-2 12-2-4-1 3-2-5-1"
- for %%h in (%A%) do for /f "tokens=1-4 delims=-" %%i in ("%%h") do (
- set/a "s_kip=(%%i-1)*14+%%j+2"
- set/a "t_ook=(%%k-1)*4+%%l-1"
- for /f "tokens=1,2* delims=:" %%a in ('findstr /n .* homebook.txt') do (
- if "!s_kip!"=="%%a" (
- set str=%%c
- set str=!str:-=!
- set str=!str: =!
- call echo.%%str:~!t_ook!,1%%
- )
- )
- )
- pause
复制代码
[ 本帖最后由 hanyeguxing 于 2010-4-27 18:49 编辑 ] |