标题: [文本处理] BAT怎样批量修改 指定位置php文件固定行不同内容? [打印本页]
作者: xiaomingming 时间: 2019-5-1 22:13 标题: BAT怎样批量修改 指定位置php文件固定行不同内容?
BAT怎样批量修改 指定位置php文件固定行不同内容?
多个指定位置php文件,需要修改这些文件中的特定一行,比如第5行中的内容,把这一行的内容按照列表中内容进行修改。
例子:
有多个指定文件
D:\mulu1\mulu1\mulu1\1.php
D:\mulu2\mulu2\mulu2\2.php
D:\mulu3\mulu3\mulu3\1.php
....
同时有一个文本文件a.txt里面的内容如下
文件位置 第5行修改为
D:\mulu1\mulu1\mulu1\1.php $cfg_dbname = 'ceshi1';
D:\mulu1\mulu1\mulu1\1.php $cfg_dbname = 'ceshi2';
D:\mulu1\mulu1\mulu1\1.php $cfg_dbname = 'ceshi3';
需要把1,2,3等文件中的第5行,按照文本文件a.txt中进行修改,把1.php中第5行改为$cfg_dbname = 'ceshi1';;
把2.php中第5行改为$cfg_dbname = 'ceshi2';,把3.php中第5行改为$cfg_dbname = 'ceshi3';........
作者: xiaomingming 时间: 2019-5-1 22:22
麻烦大家帮我解决一下 谢谢了
作者: yhcfsr 时间: 2019-5-1 22:50
本帖最后由 yhcfsr 于 2019-5-1 22:57 编辑
两个问题:
1.a.txt 两列之间的分隔符是不是TAB,如果不是最好改为tab
2.php文件的文本编码是什么?
假设 a.txt列分隔符为tab,php为UTF8,请将以下代码保存为bat,并做好用户设置.
测试前一定要备份源文件- @Powershell "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]::Default))").Invoke()}" & pause & exit
-
- #=========用户设置=========
- $list_txt = 'a.txt'; # 指定列表文件
- $line_num = 5; # 指定修改第几行
-
- #=========主程序开始=========
- foreach($line in (type $list_txt -ReadCount 0))
- {
- $path, $info = $line -split "`t"
- if([io.fileinfo]::new($path).Exists)
- {
- $text = type $path -ReadCount 0;
- $text[$line_num - 1] = $info;
- [io.file]::WriteAllLines($path, $text, [text.encoding]::UTF8)
- }
- }
复制代码
作者: xiaomingming 时间: 2019-5-1 23:28
回复 3# yhcfsr
你好,分隔符我可以改成TAB,但是PHP编码是ansi,
这样我可以用以上编码运行吗?
有劳了,真心谢谢
作者: xiaomingming 时间: 2019-5-1 23:38
回复 3# yhcfsr
我把分隔符改成TAB,编码最下面的UTF8改成ANSI,然后运行显示错误
作者: yhcfsr 时间: 2019-5-1 23:58
你把ANSI改为Default
作者: xiaomingming 时间: 2019-5-2 10:45
回复 6# yhcfsr
好的,可以加你个联系方式吗,非常感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |