找回密码
 加入
搜索
楼主: anythinging

[网络通信] 【已解决】关于替换或删除文件中的部份字符的问题

[复制链接]
发表于 2020-1-30 12:25:09 | 显示全部楼层
anythinging 发表于 2020-1-30 11:47
感谢指点!请问如果要保留文件里其它内容,只是删除这一行呢?

假设你要处理的文本有5行,仅仅第一行要替换,
### 友情提示:本脚本由 Au3.REHelper 于 2020/01/30 12:17 自动生成,不保证其正确性,请自行测试 ###
Local $sSource = _
                'password 51:b:01000000D08C9DDF0115D1118C7A00C' & @CRLF & _
                'line2' & @CRLF & _
                '3' & @CRLF & _
                '4' & @CRLF & _
                '5' & @CRLF
;~MsgBox(0, '源字符串', $sSource)

$password = '12345678'
Local $sSRERe = StringRegExpReplace($sSource, '(?i)(^.*51:b:)(.*)', '${1}' & $password)

MsgBox(0, '替换结果', $sSRERe)

发表于 2020-1-30 12:30:38 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-1-30 12:33 编辑

fileread和fileopen的应该是这样写了:注意:如果是多行内容的话,(?is),中的s需要去除,因为:(?s)(?#让.可匹配任意字符含换行),所以仅仅替换第一行内容的话,需要去除s
$sSource=FileRead(@desktopDir&"\default.rdp");假设存放路径在桌面;替换文件中的password 51:b:后的内容
MsgBox(262144, '原文内容', $sSource)

$file=FileOpen(@desktopDir&"\default.rdp", FileGetEncoding(@desktopDir&"\default.rdp") + 2);2 = 写入模式(先删除之前的内容)

$password = '12345678'
;~ Local $sSRERe = StringRegExpReplace($sSource, '(?is)(^.*51:b:)(.*)', '${1}' & $password)
Local $sSRERe = StringRegExpReplace($sSource, '(?i)(^.*51:b:)(.*)', '${1}' & $password)
MsgBox(262144, '更改结果', $sSRERe)

FileWrite($file,$sSRERe)
FileClose($file)


 楼主| 发表于 2020-1-31 17:23:21 | 显示全部楼层
floor6ggg 发表于 2020-1-30 12:30
fileread和fileopen的应该是这样写了:注意:如果是多行内容的话,(?is),中的s需要去除,因为:[/backcolo ...

谢谢!刚用了您这段代码,好象并没有将文件中的那行内容删除,而且文件内容好象没有任何变化 。
发表于 2020-1-31 18:20:43 | 显示全部楼层
。。晕,沟通没到位。。。。看来要深入沟通。。。。
1.上传个数学源文件,
2.写明你要的效果,颜色标明一下,。。。

看能否一歩到位搞定。。。。。
 楼主| 发表于 2020-2-1 19:13:02 | 显示全部楼层
感谢指点!
defaultRDP文件的内容大致如下
devicestoredirect:s:*
drivestoredirect:s:*
password 51:b:12345678password 51:b:12345678
desktopwidth:i:1224
desktopheight:i:773
发表于 2020-2-1 19:32:00 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-2-1 19:42 编辑
anythinging 发表于 2020-2-1 19:13
感谢指点!
defaultRDP文件的内容大致如下
devicestoredirect:s:*

预想的要达到的效果大概是怎么样的…… ?还是之前提到的,仅是第一行替换?

即:

devicestoredirect:s:*
drivestoredirect:s:*
password 51:b:12345678password 51:b:12345678
desktopwidth:i:1224
desktopheight:i:773

只是第一行红色的部分需要替换?如果是的话,代码如下请测试:
### 友情提示:本脚本由 Au3.REHelper 于 2020/02/01 19:39自动生成,不保证其正确性,请自行测试 
Local $sSource = _
                'devicestoredirect:s:*' & @CRLF & _
                'drivestoredirect:s:*' & @CRLF & _
                'password 51:b:12345678password 51:b:12345678' & @CRLF & _
                'desktopwidth:i:1224' & @CRLF & _
                'desktopheight:i:773'

$password = '12345678'
Local $sSRERe = StringRegExpReplace($sSource, '(?i)(^devicestoredirect:s:)(.*)', '${1}'&$password)
MsgBox(0, '更改结果', $sSRERe)




 楼主| 发表于 2020-2-1 19:46:17 | 显示全部楼层
floor6ggg 发表于 2020-2-1 19:32
预想的要达到的效果大概是怎么样的…… ?还是之前提到的,仅是第一行替换?

即:

谢谢!
现在password 51:b:12345678这行,password 51:b:后面的内容根据前面的代码已经会替换了,想问下,如何 能删除password 51:b:12345678这行,同时保留其它行的内容。
发表于 2020-2-1 19:57:25 | 显示全部楼层
anythinging 发表于 2020-2-1 19:46
谢谢!
现在password 51:b:12345678这行,password 51:b:后面的内容根据前面的代码已经会替换了,想问下 ...

devicestoredirect:s:*
drivestoredirect:s:*
password 51:b:12345678password 51:b:12345678
desktopwidth:i:1224
desktopheight:i:773

红色部分删除,需要保留第三行的空行?即仍为5行
devicestoredirect:s:*
drivestoredirect:s:*

desktopwidth:i:1224
desktopheight:i:773

还是:仅4行
devicestoredirect:s:*
drivestoredirect:s:*
desktopwidth:i:1224
desktopheight:i:773
发表于 2020-2-1 20:01:53 | 显示全部楼层
仍为5行的写法:
devicestoredirect:s:*
drivestoredirect:s:*

desktopwidth:i:1224
desktopheight:i:773
Local $sSource = _
                'devicestoredirect:s:*' & @CRLF & _
                'drivestoredirect:s:*' & @CRLF & _
                'password 51:b:12345678password 51:b:12345678' & @CRLF & _
                'desktopwidth:i:1224' & @CRLF & _
                'desktopheight:i:773'

$password = '12345678'
Local $sSRERe = StringRegExpReplace($sSource, 'password.*', '')
MsgBox(0, '更改结果', $sSRERe)

 楼主| 发表于 2020-2-1 20:09:28 | 显示全部楼层
floor6ggg 发表于 2020-2-1 19:57
devicestoredirect:s:*
drivestoredirect:s:*
password 51:b:12345678password 51:b:12345678

谢谢,就是把这行password 51:b:12345678password 51:b:12345678
删除
发表于 2020-2-1 20:14:42 | 显示全部楼层
anythinging 发表于 2020-2-1 20:09
谢谢,就是把这行password 51:b:12345678password 51:b:12345678
删除

仅4行的写法,把回车符和换行符加上即可
Local $sSource = _
                'devicestoredirect:s:*' & @CRLF & _
                'drivestoredirect:s:*' & @CRLF & _
                'password 51:b:12345678password 51:b:12345678' & @CRLF & _
                'desktopwidth:i:1224' & @CRLF & _
                'desktopheight:i:773'

$password = '12345678'
Local $sSRERe = StringRegExpReplace($sSource, 'password.*\r\n', '')
MsgBox(0, '更改结果', $sSRERe)

发表于 2020-2-1 20:16:23 | 显示全部楼层
Local $sSRERe = StringRegExpReplace($sSource, 'password.*\v+', '')

Local $sSRERe = StringRegExpReplace($sSource, 'password.*\v{2}', '')

都可以,自己看着调整吧

评分

参与人数 1金钱 +30 收起 理由
anythinging + 30 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-17 03:36 , Processed in 0.075953 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表