批处理高手帮个忙 变量处理 (搞定了再加送50分)

现有一字符串值: 字符串一S1字符串二
该字符串值(字符串一和二都有可能含.)存放在list.txt文件里 而且仅有这个字符串
当S1为数字时 ,请问如何根据用户依次输入的开始数,步进数,结束数(这三个数分别用一变量来保存)来 产生一系列的字符串(如果我输入的是 9,2,15)
形如
字符串一9字符串二 ;
字符串一11字符串二 ;
字符串一13字符串二 ;
字符串一15字符串二 ;
并将这一系列字符串自动保存到lists.txt文件下

当S1为中文数字时(就是一,二,三时) ,请问如何根据用户依次输入的开始数,步进数,结束数(这三个数分别用一个变量来保存)来 产生一系列的字符串(如果我输入的是 9,2,15)
形如
字符串一九字符串二 ;
字符串一十一字符串二 ;
字符串一十三字符串二 ;
字符串一十五字符串二 ;
并将这一系列字符串自动保存到lists.txt文件下
用vbs bat cmd任意一个都可以 只要能实现这个功能
S1在list.txt中是符号^或&之类的 不会是字母和数字 代替 用S1只是为了方便表达 我说的当S1为中文数字时就是想要生成的字符串中S1用中文数字代替, 可以确定的是中文数字在二百以内

第1个好搞,第2个嘛.今天太晚了,等明天在看看吧,好象很麻烦......

@echo off
set/p a=开始数:
set/p b=步进数:
set/p c=结束数:
for /f "tokens=1,2 delims=S1" %%a in (list.txt)do set sr1=%%a&set sr2=%%b
for /l %%i in (%a% %b% %c%)do echo %sr1%%%i%sr2% >>lists.txt

第二个真长!!!代码如下:

@echo off&setlocal EnableDelayedExpansion
set/p a=开始数:
set/p b=步进数:
set/p c=结束数:
for /f "tokens=1,2 delims=S1" %%a in (list.txt)do set sr1=%%a&set sr2=%%b
for /l %%i in (%a% %b% %c%)do (
call:aa %%i
echo !sr1!!str!!sr2! >>lists.txt
)
start lists.txt
exit

::以下部分即是汉化!
:aa
set ma=%1
for /l %%i in (0 1 1000) do if "!ma:~%%i,1!"=="" set slen=%%i&goto :bb
:bb
set/a n=1&set m=!ma:~-1,1!&call:cc
if %slen% gtr 1 set/a n+=1&set "m=!ma:~-2,1!"&call:cc
if %slen% gtr 2 set/a n+=1&set "m=!ma:~-3,1!"&call:cc
if %slen% gtr 3 set/a n+=1&set "m=!ma:~-4,1!"&call:cc
if "%m3%%m2%%m1%"=="零零零" (
set m1=&set m2=&set m3=) else (
if "%m2%%m1%"=="零零" (
set m2=&set m1=) else (
if "%m3%%m2%"=="零零" (
set m2=) else if "%m1%"=="零" set m1=))
set "str=%m4%%m3%%m2%%m1%"
(set m1=<nul&set m2=<nul&set m3=<nul&set m4=<nul)
exit/b aa
:cc
if "!m:~-%n%,1!"=="0" set "m=零"
if "!m:~-%n%,1!"=="1" set "m=一"
if "!m:~-%n%,1!"=="2" set "m=二"
if "!m:~-%n%,1!"=="3" set "m=三"
if "!m:~-%n%,1!"=="4" set "m=四"
if "!m:~-%n%,1!"=="5" set "m=五"
if "!m:~-%n%,1!"=="6" set "m=六"
if "!m:~-%n%,1!"=="7" set "m=七"
if "!m:~-%n%,1!"=="8" set "m=八"
if "!m:~-%n%,1!"=="9" set "m=九"
if not defined m1 set m1=%m%&&exit/b cc
if not defined m2 (if "%m%"=="零" (set m2=%m%
) else (set m2=%m%十))&exit/b cc
if not defined m3 (if "%m%"=="零" (set m3=%m%
) else (set m3=%m%百))&exit/b cc
if not defined m4 (if "%m%"=="零" (set m4=%m%
) else (set m4=%m%千))
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-08
太简单了,不想写,说下原理,你自己写吧
set /p 替换内容=(格式9,2,15):
for /l %%i in (%替换内容%)do (
set num=%%i
::这里加入汉化就可以了。
call :汉化
echo %汉化%;>>list.txt)

:汉化
::汉化方式
set 个位0=零
set 个位1=一
set 个位2=二
set 个位3=三
set 个位4=四
set 个位5=五
set 个位6=六
set 个位7=七
set 个位8=八
set 个位9=九

................
...
判断数位一一汉化就可以了。
set 个位=%num:~-1,1%
set 十位=%num:~-2,1%
set 百位=%num:~-3,1%
set 汉化=%百位%百%十位%十%个位%
...
第2个回答  2009-04-08
该问题应该可以做到,但有几点前提不足。
1、如何确定list.txt中哪些是字符串一、哪些是s1、哪些是字符串二、?
总不至于你的“字符串一”内容就是 “字符串一”这4个字符吧?
2、当s1为中文数字时,该数最大有多大?能确定么?要知道中文数字有多种表达形式
如:一十一 也可以是 十一 、一百一十 也可以是一百一、等。。。
如果表达式不确定将是非常麻烦,甚至是无法完成的。
第3个回答  2009-04-07
哇塞!我看得眼睛都花了。能不能举个例子啊?
要保存输入的变量可以啊!用
set /p var1=请输入开始数
set /p var2=请输入步数
set /p var3=请输入结束数
然后(%var1% %var2% %var3%)调用就行了。

批处理高手帮个忙 变量处理 (搞定了再加送50分)
set\/p a=开始数:set\/p b=步进数:set\/p c=结束数:for \/f "tokens=1,2 delims=S1" %%a in (list.txt)do set sr1=%%a&set sr2=%%b for \/l %%i in (%a% %b% %c%)do echo %sr1%%%i%sr2% >>lists.txt 第二个真长!!!代码如下:echo off&setlocal EnableDelayedExpansion set\/...

相似回答