无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5856|回复: 38
打印 上一主题 下一主题

[已解决] [感谢kli] 帮忙从GoogleCode下载搜索替换命令行工具“rxrepl”

[复制链接]
1#
发表于 2020-5-17 12:23:41 | 显示全部楼层
剛摸了一下,不直覺。
用了通配符還得搭配 --dir -I 這兩個參數
最重要的是沒辨法換如  (x64) 換成 abc,就是字串裏面有 () 它就不認識。
或許有其它方法,但這簡單的搜尋取代還要花時間去學,麻煩。
好處是支援大檔的Unicode,像fr.exe就讀不到大檔案的Unicode。
fart.exe 更是簡單易用,就 fart.exe *.txt "Search" "Replace"
回复

使用道具 举报

2#
发表于 2020-6-10 19:42:46 | 显示全部楼层
本帖最后由 guies 于 2020-6-10 19:47 编辑
2010hook 发表于 2020-6-10 18:26
你要把符号写成UTF8/Unicode编码,才能替换!
我前面都说过了,11楼就有转换工具,你再看看。

還是好難用,要轉編碼,又有逃逸字元等等,最重要的是,我還是轉不成功。以下只列出幾種,我是試了數十種不同指令,弄個搜尋取代比我寫小程式還難。
  1. rxrepl.exe --dir %cd% -I *.txt -a -s "%ProgramFilesDir(x64)%" -r "C:\\Program Files" --no-backup
  2. rxrepl.exe --dir %cd% -I *.txt -a -s "%%ProgramFilesDir(x64)%%" -r "C:\\Program Files" --no-backup
  3. rxrepl.exe --dir %cd% -I *.txt -a -s "%ProgramFilesDir\u0028x64\u0029%" -r "C:\\Program Files" --no-backup
  4. rxrepl.exe --dir %cd% -I *.txt -a -s "%%ProgramFilesDir\u0028\u0078\u0036\u0034\u0029%%" -r "C:\\Program Files" --no-backup
复制代码


回复

使用道具 举报

3#
发表于 2020-6-10 19:50:48 | 显示全部楼层
我用 fr 是這樣,只不過不支援 Unicode 大檔
就是先轉成 UTF-8 搜尋取代後再轉回 Unicode。
但再怎樣也方便多了,不需要去考慮其它。
  1. fr.exe *.txt -fic:"%%ProgramFilesDir(x64)%%" -t:"C:\Program Files" -frc
  2. fr.exe *.txt -fic:"%%ProgramFilesDir%%" -t:"C:\Program Files (x86)" -frc
  3. fr.exe *.txt -fic:"%%Common AppData%%" -t:"C:\ProgramData" -frc
  4. fr.exe *.txt -fic:"%%Fonts%%" -t:"C:\Windows\Fonts" -frc
  5. fr.exe *.txt -fic:"%%SystemSystem%%" -t:"C:\Windows\System32" -frc
  6. fr.exe *.txt -fic:"%%Program Files Common%%" -t:"C:\Program Files (x86)\Common Files" -frc
  7. fr.exe *.txt -fic:"%%Local AppData%%" -t:"%%LOCALAPPDATA%%" -frc
复制代码


回复

使用道具 举报

4#
发表于 2020-6-10 21:00:33 | 显示全部楼层
2010hook 发表于 2020-6-10 20:33
斜杠“\”是必须替换的符号,你为何保留“\\”?
没看仔细。

經實測若要替換為 C:\Program Files 的話,一定要 C:\\Program Files 才可替換成功。
還有,還是算了不研究了,那麼多的符號,還要一個一個的去轉換再填進去,
那我不如轉UTF-8來的快。
不如你新建一個文字檔,用rxrepl.exe把
%ProgramFilesDir(x64)%
換成
C:\Program Files
我想看看要怎麼寫,%ProgramFilesDir(x64)% 這一行中我要改掉多少字符去轉換,想起來就好麻煩。
回复

使用道具 举报

5#
发表于 2020-6-11 10:57:15 | 显示全部楼层
2010hook 发表于 2020-6-11 00:40
你要先把路径变量中的符号转换成编码,再替换:

-s 后面必须符合Perl正则式语法!


用這條命令成功了,
  1. rxrepl.exe --dir %cd% -I *.txt -a -s "\x25ProgramFilesDir\x28x64\x29\x25" -r "C:\\Program Files" --no-backup
复制代码
不過您想想,會用到批處理就是因為有多個需要取代的字串,而且會常常用到需要增減。
這種寫法,只要一個不注意,疏漏就會導致某個字串取代不成功,
當有多行時,也不會查覺到替換後那一個字串取代不成功。
這種不直覺的寫法風險太高,還要考慮如果數十數百行的每個字符必須先轉換好編碼。

如果只需要替換一次,那可以用Emeditor。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-15 15:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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