floor6ggg 发表于 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)


floor6ggg 发表于 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)



anythinging 发表于 2020-1-31 17:23:21

floor6ggg 发表于 2020-1-30 12:30
fileread和fileopen的应该是这样写了:注意:如果是多行内容的话,(?is),中的s需要去除,因为:

谢谢!刚用了您这段代码,好象并没有将文件中的那行内容删除,而且文件内容好象没有任何变化 。

floor6ggg 发表于 2020-1-31 18:20:43

。。晕,沟通没到位。。。。看来要深入沟通。。。。
1.上传个数学源文件,
2.写明你要的效果,颜色标明一下,。。。

看能否一歩到位搞定。。。。。

anythinging 发表于 2020-2-1 19:13:02

感谢指点!
defaultRDP文件的内容大致如下
devicestoredirect:s:*
drivestoredirect:s:*
password 51:b:12345678password 51:b:12345678
desktopwidth:i:1224
desktopheight:i:773

floor6ggg 发表于 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)





anythinging 发表于 2020-2-1 19:46:17

floor6ggg 发表于 2020-2-1 19:32
预想的要达到的效果大概是怎么样的…… ?还是之前提到的,仅是第一行替换?

即:


谢谢!
现在password 51:b:12345678这行,password 51:b:后面的内容根据前面的代码已经会替换了,想问下,如何 能删除password 51:b:12345678这行,同时保留其它行的内容。

floor6ggg 发表于 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

floor6ggg 发表于 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)


anythinging 发表于 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
删除

floor6ggg 发表于 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)


floor6ggg 发表于 2020-2-1 20:16:23

Local $sSRERe = StringRegExpReplace($sSource, 'password.*\v+', '')

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

都可以,自己看着调整吧
页: 1 [2]
查看完整版本: 【已解决】关于替换或删除文件中的部份字符的问题