中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何将字符写到文档的指定位置
作者:
标题: 如何将字符写到文档的指定位置 上一主题 | 下一主题
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『楼 主』:  如何将字符写到文档的指定位置

有这样一个想法,要求生成一个文档a.txt
内容及格式如下

12121212121212121212121
1212  21  1  1 12    12121 1
1  1     1                1    2
1
1

特点:
内容全是1或2  
先随机得到1或2然后写入a.txt
再随机得到1或2再写入a.txt
如此循环写40个
要求:
横向必须是1212121212 不能重复如 112或122都不行
纵向必须全是1或2

先谢谢两位的解答,可能是我说的不够清楚,
我的意识是
先随机得到一个数,不是1就是2,(或a和b也行)
然后将这个数写入a.txt
再随机得到一个数,不是1就是2,(或a和b也行)
再判断上一次得到的是1还是2,如果这次得到的和上次得到的相同,就把这次得到的写在上次得到的下面,反之则另起一行.

[ Last edited by 26933062 on 2007-3-25 at 06:23 PM ]

2007-3-24 18:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 2 楼』:  

怎么没人会吗? 还是我说的不够清楚???

2007-3-25 16:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 3 楼』:  

横向必须是1212121212 不能重复如 112或122都不行
纵向必须全是1或2?

1212121212
1212121212
1212121212
1212121212

2121212121
2121212121
2121212121
2121212121
那么就这2种?没行的长度多少?还有你的空格部分又是什么?你的要求不清楚

2007-3-25 23:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 4 楼』:  

这个满意否?
@echo off&color 0a&SETLOCAL ENABLEDELAYEDEXPANSION 2>nul 3>nul
for /l %%a in (1,1,40) do (
call set /a aaa=%%random%%%%%%39+1
for /l %%b in (1,1,!aaa!) do (
call set /a randomx=%%random%%
call set /a 1/^(%%randomx%%%%%%^(%%b+1^)%%%%2^)&&call :pri1 %%b
call set /a 1/^(%%randomx%%%%%%^(%%b+1^)%%%%2^)||set/p=  <nul
)
echo.)
echo.
pause>nul&goto :eof

:pri1
set /a 1/(%1%%2)&&set/p="0 "<nul
set /a 1/(%1%%2)||set/p="1 "<nul
goto :eof


   此帖被 +11 点积分      点击查看详情   
评分人:【 lxmxn 分数: +11  时间:2007-3-26 07:53


2007-3-26 01:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  


To everest79:

  兄的代码很精彩,set/a运算可以说用的完美。

  另外,有一疑惑,为什么开头的SetLocal后面要加2>nul 3>nul呢?有什么作用?


2007-3-26 07:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 6 楼』:  

re lxmxn
  将所有错误输出全部转向到nul,这样在以后的代码中再也不用2>nul了
  主要因为使用set/a计算判断的话一定会输出错误信息

[ Last edited by everest79 on 2007-3-25 at 07:09 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 lxmxn 分数: +2  时间:2007-3-26 08:14


2007-3-26 08:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 7 楼』:  

everest79
你的代码是很好,不过好像跟我的题意不符合啊,我什么地方说的不够清楚,请指出来,好吗?

2007-3-26 12:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  


  楼主的意思好像是排列出来的行字符数是固定的,即长度一定。


2007-3-26 13:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 9 楼』:  

行数不是固定的,而是不确定的.
随机得到的数和前一个数比较,一样的就纵向排例,不一样就横向排列
所以文档的内容横向就是 ababababababababab................
不可能是aab或bba

2007-3-26 13:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 10 楼』:  

随机序列,嘿嘿,又取巧了
@echo off&set lineh=1 2>nul 3>nul
for /l %%i in (1,1,70) do (
call set/arandomx=%%random%%%%%%2+1
call set/a1/^(%%randomx%%-%%ax%%^)&&call :cou %%ay%% %%lineh%%&&set/aa=||call :pri %%randomx%%)
call :cou %%ay%% %%lineh%%
for /l %%i in (1,1,%lineh%) do call set f= %%f%%
for /f "tokens=1,2 delims=[]" %%i in ('find /n /v "" test.txt') do set colw=%%i&set colt%%i=%%j%f%END
set /a lineh=lineh-1 >test.txt
for /l %%a in (0,1,%lineh%) do (
for /l %%b in (1,1,%colw%) do (
call set txt=%%colt%%b%%
call set/p=%%txt:~%%a,1%%<nul >>test.txt
)
echo.>>test.txt)
echo %lineh%xx%ay%xx%colw%&pause&goto :eof
:cou
set/a1/(%1/%2),lineh=%1
set/aay=0&echo.>>test.txt&goto :eof

:pri
set/p="%1"<nul >>test.txt
set/aax=%1,ay+=1&goto :eof


2007-3-27 02:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 11 楼』:  

谢谢  everest79
问题解决了,代码没太看懂,慢慢琢磨!
再次谢谢!!!

2007-3-27 12:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 12 楼』:  

我是按你的意思按行输出的,然后再把他们反过来

2007-3-27 23:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 13 楼』:  

everest79兄弟 你的代码好像还有一点小毛病,就是多运行几次后,偶尔会在开头出现一两个空格,怎么回事?

2007-3-28 05:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 14 楼』:  

嘿嘿,你在最前边一行加上setlocal就可以了

2007-3-28 06:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『第 15 楼』:  

问一下,
set /a aaa=%%random%%%%%%39+1
这行代码是什么意思,那么多的“%”

2007-3-28 08:28
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: