标题: [文件操作] 【已解决】BAT怎样批量修改文本文件固定行不同内容? [打印本页]
作者: ligan01 时间: 2015-8-28 06:53 标题: 【已解决】BAT怎样批量修改文本文件固定行不同内容?
本帖最后由 ligan01 于 2015-8-28 23:35 编辑
多个txt文件,需要修改这些文件中的特定一行,比如第5行中的内容,把这一行的内容按照列表中内容进行修改。
例子:
有多个文件
1.txt
2.txt
3.txt
....
同时有一个文本文件a.txt里面的内容如下
文件名 第5行修改为
1 a
2 b
3 c
....
需要把1,2,3等文件中的第5行,按照文本文件a.txt中进行修改,把1.txt中第5行改为a;
把2.txt中第5行改为b,把3.txt中第5行改为c........
作者: 尘丶 时间: 2015-8-28 08:44
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b *.txt') do (
- for /f "skip=1 tokens=1,2 delims= " %%b in (a.txt) do (
- set n=
- if "%%a"=="%%b.txt" (
- for /f "delims=" %%d in ('type %%b.txt') do (
- set /a n+=1
- if !n!==5 (echo;%%c>>%%b000.txt
- ) else (echo;%%d>>%%b000.txt)
- )
- del "%%b".txt
- ren "%%b000".txt "%%b".txt
- )
- )
- )
- pause
复制代码
作者: ligan01 时间: 2015-8-28 10:05
感谢高手即时提供解决方法
可不可以在麻烦下高手
我上面只是说的例子
附件中是我需要解决的具体事例中的三个例子
http://yunpan.cn/cmjPM4cVGHTuU
现在需要把
30015233710000.txt 需要替换第25行
30015281350000.txt 需要替换第24行
30015315810000.txt 需要替换第26行
这需要替换行的起始字符都是 “ PDAT”
替换的列表为list.xlsm,第一列为文件名,第二列为需要替换为的内容
这种情况下有解不?
再次感谢你对我第一个问题的解答:handshake
作者: pcl_test 时间: 2015-8-28 10:27
倘若还没有能力修改代码,那么就直接发实际问题,不要绕,不是每个人解答的初衷都是热心
作者: 回家路上 时间: 2015-8-28 10:51
本帖最后由 回家路上 于 2015-8-28 12:49 编辑
下次就直接描述要干嘛就行。要不楼上解析txt的不就白搞了。这样不好。
我电脑上没有Office,没有测,写一个练手而已。不好使就坐等。- @set @n=0; /* & echo off&setlocal enabledelayedexpansion
- ::excel文件名称
- set "excelFile=list.xlsx"
- for /f "delims=" %%i in ('echo;%excelFile%^|cscript -nologo -e:jscript "%~0"') do set "%%i"
- for /f "delims=" %%i in ('dir /b *.txt') do (
- (for /f "usebackq delims=" %%a in ("%%i") do (
- set "line=%%a"
- if "!line:~0,4!" equ "PDAT" (echo;!_%%~ni!) else echo;%%a
- ))>"$%%i$"
- move /y "$%%i$" "%%i"
- )
- del /q "$*$"
- pause & exit/b & rem */
-
- function readExcel(filePath) {
- var oXL = new ActiveXObject("Excel.application");
- var oWB = oXL.Workbooks.open(filePath);
- oWB.worksheets(1).select();
- var oSheet = oWB.ActiveSheet;
- var rows = oSheet.usedrange.rows.count;
- var tempStr = "";
- for (var i = 1; i <= rows; i++) {
- if (oSheet.Cells(i, 1).value == "null" || oSheet.Cells(i, 2).value == "null")
- break;
- tempStr+= "_"+oSheet.Cells(i, 1)+"="+oSheet.Cells(i, 2)+"\r\n"
- }
- WSH.Echo(tempStr)
- oXL.Application.Quit();
- CollectGarbage();
- }
- var filePath = WScript.StdIn.ReadAll();
- readExcel(filePath);
复制代码
作者: 尘丶 时间: 2015-8-28 11:06
list.xlsm里面有特殊字符,批处理开会是乱码
作者: pcl_test 时间: 2015-8-28 11:09
批处理不支持直接处理Excel表格,先将表格另存为txt文本,如上图- @echo off&setlocal enabledelayedexpansion
- for /f "usebackq tokens=1*" %%a in ("list.txt") do (
- (for /f "usebackq delims=" %%i in ("%%a.txt") do (
- set "str=%%i"
- set "str=!str: =!"
- set "str=!str: =!"
- if "!str:~,4!" equ "PDAT" (echo; %%b) else echo;%%i
- ))>$
- move $ "%%a.txt"
- )
- pause
复制代码
作者: ligan01 时间: 2015-8-28 23:37
多谢高手帮忙
问题已解决
下次我知道该怎么求助了~
THX
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |