[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 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';........

麻烦大家帮我解决一下  谢谢了

TOP

本帖最后由 yhcfsr 于 2019-5-1 22:57 编辑

两个问题:
1.a.txt 两列之间的分隔符是不是TAB,如果不是最好改为tab
2.php文件的文本编码是什么?

假设 a.txt列分隔符为tab,php为UTF8,请将以下代码保存为bat,并做好用户设置.
测试前一定要备份源文件
  1. @Powershell "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]::Default))").Invoke()}" & pause & exit
  2. #=========用户设置=========
  3. $list_txt = 'a.txt'; # 指定列表文件
  4. $line_num = 5; # 指定修改第几行
  5. #=========主程序开始=========
  6. foreach($line in (type $list_txt -ReadCount 0))
  7. {
  8.     $path, $info = $line -split "`t"
  9.     if([io.fileinfo]::new($path).Exists)
  10.     {
  11.         $text = type $path -ReadCount 0;
  12.         $text[$line_num - 1] = $info;
  13.         [io.file]::WriteAllLines($path, $text, [text.encoding]::UTF8)
  14.     }
  15. }
复制代码
QQ 33892006

TOP

回复 3# yhcfsr


    你好,分隔符我可以改成TAB,但是PHP编码是ansi,
这样我可以用以上编码运行吗?

有劳了,真心谢谢

TOP

回复 3# yhcfsr


   我把分隔符改成TAB,编码最下面的UTF8改成ANSI,然后运行显示错误

TOP

你把ANSI改为Default
QQ 33892006

TOP

回复 6# yhcfsr


    好的,可以加你个联系方式吗,非常感谢

TOP

返回列表