如何将文本随机混淆?

ichenghua 2007-12-27 09:21:09
我的一个目录下,有100个.txt文本,我希望将他们的内容混合。


我希望随机获取一个文本,中的任意一行数据,然后把它粘贴到另一个随机文本的最后一行。

大概步骤是这样:
-------------------------------------------------------

1、随机获取目录中的一个文本,如:5.txt
5.txt内容如下:“
13707020001
13707020002
13707020003
13707020004
13707020005


2、然后再随机获取一行的内容,如,获取第3行的内容:“13707020003”
然后把5.txt的“13707020003”删除,保存。
然后5.txt就变成这样了:“
13707020001
13707020002
13707020004
13707020005


3、然后再随机选择一个文本,如选择36.txt,把刚才获取到的数据(“13707020003”)粘贴到36.txt的最后一行。

4、按上面的规律重复执行1000遍,使这个目录下的文本全部混淆。



在这里谢谢各位了。
...全文
377 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2007-12-27
  • 打赏
  • 举报
回复
只混淆?不要恢复?
cike_1111 2007-12-27
  • 打赏
  • 举报
回复
大大们 有更简便的代码就贴出来 我们大家一起学习!

我的这个例题还是有得改进的!
cike_1111 2007-12-27
  • 打赏
  • 举报
回复
材料有错

多加2个 list 控件

再说一次做这个例题的步骤

>>材料:1*file1
1*command1
1*list1
1*llist2
>>设置 file1的显示属性为 *.txt

>>引用 Microsoft Scripting Runtime
>> 复制代码到代码窗口
>> 启动运行 点command1
>> 等file1 不闪屏 就可以打开 c:\liti文件夹查看成果了


cike_1111 2007-12-27
  • 打赏
  • 举报
回复
哇靠!
思路不是很清晰了么! 还需要具体代码呀....
我忍~...

记得把分(全部)给我啊~ [我现在在和某某比赛看谁1个月内得到的技术分多..^_^]

我的思路是:用一个file控件 指向你指定的目录后 设置该控件只显示文本文档后执行循环 就循环file控件中的TXT文本

材料:1*file控件
1*command控件
制作过程:
1.放入材料
2.设置file控件的显示属性为txt
3.放入代码:


'我这里引用了 Microsoft Scripting Runtime 为的是能创建 c:\liti 文件夹
'你照我例题做的要记得引用 明白思路后做你自己题目可以忽略这一步
Dim sfo As New FileSystemObject '声明sfo(好像叫这个sof 又好象是这个 管它呢 反正只是一个变量名)

Private Sub 生成txt() '该过程生成txt 就是你说的那100个 txt 文件
For i = 1 To 100
For j = 1 To 50
a = a & i & "文本内容" & j & vbCrLf
Next j
Open "c:\liti\" & Right("000" & i, 3) & ".txt" For Output As #1
Print #1, a
Close #1
a = ""
Next i

End Sub

Private Sub Command1_Click()
Dim 随机文件名 As String
Randomize
随机文件名 = "c:\liti\" & File1.List(Int(Rnd * (File1.ListCount)))
For i = 1 To 1000
Open 随机文件名 For Input As #1 '先打开随机获取的txt 把数据放到list中
Do While EOF(1) = False
Line Input #1, a
If a <> "" Then List1.AddItem a
Loop
Close #1

sfo.DeleteFile 随机文件名 ' 打开获取数据后删除这个文件
变量1 = Int(Rnd * (List1.ListCount)) '获取随机一项目号
变量2 = List1.List(变量1) '变量存储它
List1.RemoveItem 变量1 '删除这个项目

Open 随机文件名 For Output As #1 '前面删了再建一个同样名字的文本文件
For j = 0 To List1.ListCount - 1 '循环把list内容改为一个变量存储的数据
ss = ss & List1.List(j) & vbCrLf
Next j
Print #1, ss '向建立的文本里写入修改后的数据
ss = ""
Close #1
File1.Refresh
随机文件名 = "c:\liti\" & File1.List(Int(Rnd * (File1.ListCount)))
Open 随机文件名 For Input As #1
Do While EOF(1) = False
Line Input #1, a
If a <> "" Then List2.AddItem a
Loop
Close #1
sfo.DeleteFile 随机文件名
List2.AddItem 变量2
Open 随机文件名 For Output As #1
For j = 0 To List2.ListCount - 1 '循环把list内容改为一个变量存储的数据
ss = ss & List2.List(j) & vbCrLf
Next j
Print #1, ss '向建立的文本里写入修改后的数据
ss = ""
Close #1
File1.Refresh


List1.Clear
List2.Clear
Next i
End Sub

Private Sub Form_Load()
If sfo.FolderExists("c:\liti") = False Then '若没有这个文件夹
sfo.CreateFolder "c:\liti" '就生成这个文件夹
Call 生成txt '向里面写入100个txt
End If
File1.Path = "c:\liti" '设置指向的目录
List1.Visible = False
List2.Visible = False
End Sub



我随机打开了一个txt 文本 内容如下:
10文本内容1
10文本内容2
10文本内容3
10文本内容4
10文本内容5
10文本内容6
10文本内容7
10文本内容8
10文本内容9
10文本内容11
10文本内容13
10文本内容14
10文本内容15
10文本内容16
10文本内容17
10文本内容19
10文本内容20
10文本内容23
10文本内容24
10文本内容25
10文本内容26
10文本内容27
10文本内容29
10文本内容30
10文本内容32
10文本内容33
10文本内容34
10文本内容35
10文本内容36
10文本内容38
10文本内容39
10文本内容40
10文本内容41
10文本内容42
10文本内容43
10文本内容44
10文本内容46
10文本内容48
10文本内容49
85文本内容38
62文本内容9
95文本内容25
53文本内容14
44文本内容4
67文本内容12
73文本内容6
65文本内容24
4文本内容27
38文本内容16
83文本内容18

========发现原问被内容有几项目没了 而后面多出N个不是本文本的内容 恭喜我成功了~~

ichenghua 2007-12-27
  • 打赏
  • 举报
回复
为何我做的会出现:
运行时错误'53'
文件未找到


是否只需要一个command控件和list1控件就可以了?
of123 2007-12-27
  • 打赏
  • 举报
回复
改改思路:
把所有的记录都读出来,然后随机选取 n 行,写入一个文件。

这里假定记录总数不超过 Integer 极限,并使用 ListBox:

Private Sub Command1_Click()
Dim i As Integer, j As Integer, n(1 To 100) As Integer
Dim strTmp As String, r As Integer

'Read all lines of all files
For i = 1 To 100
Open "c:\" & CStr(i) & ".txt" For Input As #1
Do Until EOF(1)
Line Input #1, strTmp
List1.AddItem strTmp
n(i) = n(i) + 1
Loop
Close #1
Next i

Randomize
For i = 1 To 100
Open "c:\" & CStr(i) & "New.txt" For Output As #1
For j = 1 To n(i)
r = Rnd * List1.ListCount - 1
Print #1, List1.List(r)
List1.RemoveItem r
Next j
Close #1
Next i
End Sub

ichenghua 2007-12-27
  • 打赏
  • 举报
回复
哈哈,恩,找到了,

虽然分数不多,但还是真心感谢cike_1111。
cike_1111 2007-12-27
  • 打赏
  • 举报
回复
怎么加分!!

我问的问题一般都很奇怪 没有人回答好过! 现在又改版了 我想

应该是 管理帖子 这个吧!

....
ichenghua 2007-12-27
  • 打赏
  • 举报
回复
再顶下,cike_1111真好,

我先睡觉去了,晚上再来看这贴。zZZZ
ichenghua 2007-12-27
  • 打赏
  • 举报
回复
顺便问下如何给分呀?

我比较少来CSDN,。。。。这里的规矩都不大清楚。--!!
(以后会常来这里的。^_^)
ichenghua 2007-12-27
  • 打赏
  • 举报
回复
娃哈哈,,感谢cike_1111,

由于我是VB白痴,从来没有接触过VB,
今天第一次使用VB6,按照,cike_1111的方法,一步一步来,终于完成了。


好高兴,我本想用VBS脚本来做的,结果刚写到一半,来论坛看,发现cike_1111回帖的,

解决了我的难题,再次感谢。^_^


下面是我写到一半的VBS,由于不知道如何删除文本内,指定行的内容(如:不知道如何删除文本里第4行的内容。),所以卡住了。

randomize
set fso=createobject("scripting.filesystemobject")
set a=createobject("scripting.dictionary")

i=int(rnd*100)
i2=i+1

set file=fso.opentextfile(""&i&".txt")
do while file.atendofstream<>true
m=m+1
a.add m,file.readline
loop
file.close

h=int(rnd*m)
msgbox "" & a(h) ,4096,""



xieru=""&a(h)&""
set file1=fso.opentextfile(""&i2&".txt",8,true)
file1.writeline(xieru)
file1.close


1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧