求教!本人才学批处理,小白一个,写了如下一个将文本中内容,按指定的顺序输出到另一文本中,求指点错误...

从百度知道里复制了一段 ASCII码 文本,保存在电脑里成了一行,我就想用批处理把它还原成从网页上看到的那样,一条一行,便写了如下一段批处理,却不能正确执行,
求大湿们指出它的错误在哪,或我哪里写的不规范,都可以说道说道,或直接贴出正解,或贴出修改,或是设计思路,什么的都可以说,注意我的系统环境是WIN7.
至于说手工把ASCII码 文本加一次一次的回车的方法就不要提了.本人本人才接触4天批处理,想从实战中多多学习.
下面是我看到的 ASCII码 地址
http://zhidao.baidu.com/question/110735752.html?fr=qrl&index=0
我对本bat钻研了1天半了,也没把它写正确.错误在特定字符的借用.
cmd里那 help /? 看不太懂,E文一点不会.特提出几点疑问:
1. FOR /F "options"中的tokenc=x 这个"X"取值是不是最大只能到 31 ?
2. 对一整行含某一分隔符(如空格)的文字,用参数来迭代每一字符串(数量大于31),用什么命令来实现,若大于52呢.. 不要对 分隔符 进行迭代.
3.比如两条不同类型的CALL :label ver1 ver2 分别对两条不同类型的:label 调用.那第2个CALL :label ver1 ver2对应的:label子程序中 用set %1=ver1,%2=ver2 这样对不对,
CALL的参数ver能多能设几个.
因为才学,不懂的太多,想到什么说什么,见笑了.
本bat我的思路是:在行中找出"0000 1111"这样的由0,1中间空格组成的字符串,把它前面的输出,把它后边的作为新字符串再分析

::=========.bat 开始==============
@echo off
set /p str=<ascii码.txt
echo %str%>temp1.txt
for /f "skip=1 delims=" %%a in (ascii码.txt) do set str=%%a
:main
set stra=%str%
set long=0
:strnum
set/a long+=1
if %long% geq 120 goto cai
set stra=%stra:~0,-1%
if defined stra goto strnum
if %long% LSS 30 goto endd
:cai
set i=20
:caifen1
call set str1=%%str:~%i%,9%%
set yan=0
:xiaoyan
if %yan% gtr 8 goto caifen2
call set strc=%%str1:~%yan%,1%%
set /a yan+=1
set strc=%strc:"=3%
if %yan%==5 goto xiaoyan
if "%strc%"=="0" goto xiaoyan
if "%strc%"=="1" goto xiaoyan
set/a s=%long%-%i%
:xiaoyan2
if %s% leq 10 goto endd
set/a i+=1
goto caifen1
:caifen2
call set str1=%%str:~0,%i%%%
echo %str1%>>temp1.txt
call set str=%%str:~%i%%%
if %b% gtr 30 echo %str%
goto main
:endd
echo %str%>>temp1.txt
exit
::==========.bat 结束=============
去掉下面一行;这是我断错时用的,忘删了.
if %b% gtr 30 echo %str%
下面的能不能---->最多能
CALL的参数ver能多能设几个.

百度知道页面复制的内容不分行问题,似乎因为是IE9与百度知道网页兼容性不好,要不然就是百度对这个div或pre的样式做了特殊处理,我浏览百度知道是用opera浏览器,没有这个问题,我记得以前试过另一个与IE不同内核的浏览器也是不存在这个问题的。不过回答问题的文本编辑框里有UTF-8编码,复制出来可能会有乱码,我通常是用notepad++转化为ansi编码,然后还要查错,目前我没找到好的解决方法。

然后对几个问题提下自己的看法:
1、for /f的tokens选项有数量限制,不知道有没有最大值限制。
2、如果分割后的数量太多,建议是多次截取或者用变量多次取。毕竟用%%a~%%z不宜阅读。
3、没看懂所说的两个类型的call是什么意思。
另外,call :label 后面的参数是可以很多的(没测试过上限),但在:label中用%1~%9只能取有限的参数,取更多的参数时需要用到shift。
示例:
@echo off
set n=0
call :test a b c d e f g h i j k l m n o p q r s t u v w x y z
pause
:test
if "%1"=="" exit /b
set/a n+=1
echo %n% %1
shift /1
goto :test追问

先行谢谢
我是对%1~%9有疑问, 如果有另一条call 和:text2
text2中也有%1~%9 是否有冲突
还有call 对另一文件中的某段的调用,它的标签也是这样的吗
另一文件 类型能是 .txt 吗,它的标签写法呢

追答

:label标签后面%1~%9是在当前标签有效,也就是说在该次call中有效。
如:
@echo off
set n=0
call :test 1 2 3
pause
:test
echo %1 %2 %3
call :test2 a b c
echo %1 %2 %3
exit /b
:test2
echo %1 %2 %3
exit /b
运行的结果是
1 2 3
a b c
1 2 3

call不能直接调用另一bat文件中的标签,如果需要用到另一个文件的标签,可以在另一个bat文件中加入判断参数并跳转的代码。
如下示例:
==============test.bat
@echo off
set tmpver=%1
if "%tmpver:~0,1%"=="/" (
shift /1
call :a_%*
exit /b
)
:main
echo 参数: %*
pause>nul&exit
:a_/test
echo 测试 标签:test 参数:%*
exit /b
==============测试.bat
@echo off
call test.bat /test ver1 ver2 ver3
pause
exit

温馨提示:内容为网友见解,仅供参考
无其他回答

我是个菜鸟,求学习方法!
以我的经历来看,课前要有一定的预习,这是必要的,不过我的预习比较粗略,无非是走马观花地看一下课本,这样课本上讲的内容、重点大致在心里有个谱了,听起课来就比较有针对性。预习时,我们不必搞得太细,如果过细一是浪费时间,二是上课时未免会有些松懈,有时反而忽略了最有用的东西。上课时认真听课当然是必须的,...

学习电脑的最基本知识
1、学习操作系统:通过学习操作系统体系结构、操作指令、任务调度、并发管理、资源管理、权限管理、安全管理等内容,能够对计算机形成一个较为系统的理解,为后续的学习打下一个扎实的基础。2、打游戏熟悉键盘:很多人最早都是通过打游戏来学习电脑知识的,游戏里的快捷键操作会让他们更熟悉键盘,从而也能提...

世界上第一个行动电话是什么时候在哪里诞生的?
距离滑鼠发明4年后,在1968年12月9日,恩格尔巴特在全球最大的专业技术学会—IEEE会议上,展示了世界上第一个滑鼠(当时还没有“滑鼠”的名称),那是一个木质的小盒子,只有一个按钮,里面有两个互相垂直的滚轮,它的工作原理是由滚轮带动轴旋转,并使变阻器改变阻值,阻值的变化就产生了位移讯号,经电脑处理后萤幕上指示...

一个高级java工程师需要具备什么能力和技术?
1)struts 2)spring 3) hibernate 4)ibatis 5)spirngMvc 等等的其他一些相似的框架,还有项目架构中经常会用到的缓存框架例如memcached ,ehcache,oscache等Java缓存框架,需要掌握基本使用,部署,性能调优,配置 4. 数据库基础 数据库一直是程序员需要重点掌握的一部分,当下主流的还是关系型数据库,产品有oracle mysql sql...

一个高级java工程师需要具备什么能力和技术
1.Core Java部分 这是最基础的,对于一个java高级开发\/设计人员,你需要对这一部分达到精通的水平,重点内容如下: a.面向对象编程思想(封装继承多态接口) b.字符串处理 c.java.lang包,java.util包等常用包 d.java异常处理 2.Java高级部分 a.Java I\/O流 b.Java多线程技术 c.Java网络编程 d.Java Swing 后两...

相似回答