如何把一个文件夹下的所有TXT文件,第一句或者第一行头尾插入字符!
3个回答
展开全部
用2个bat文件,第一个,假如叫做handlefile.bat,接受文件名作为参数,使用for 循环把文件里面每一行输出到output文件夹下的同名文件里面,只是第一行在前后分别插入<a>和</a>。代码如下,很简单,没什么花头:
@echo off
Setlocal enabledelayedexpansion
set firstline=1
for /F "delims=" %%i in (%1) do (
if !firstline! equ 1 (echo ^<a^>%%i^</a^> > output/%1) else (echo %%i >> output/%1)
set firstline=0
)
endlocal
第二个bat文件,假如叫做run.bat,使用for 循环为本目录下面每一个txt文件调用第一个bat进行处理,代码如下:
@echo off
for %%i in (*.txt) do (
handlefile.bat %%i
)
把两个bat文件放到你的txt文件的目录里面,再创建一个叫做output的文件夹,运行run.bat就可以了。
这样做基本上能够满足需求,有2点需要注意的,1是文件名不能有空格,2是文件里面不能有空行。对于第一点,暂时没想到什么好的办法,只能靠人来保证了。第二点可以有解决方案,就是把第一个handlefile.bat的内容替换为如下,这个办法是使用findstr先保证读取的文件每一行都不是空行,然后再进行处理,运行方法更上面一样,只是多创建一个tmp文件夹
@echo off
Setlocal enabledelayedexpansion
findstr /n .* %1>tmp/%1
for /F "tokens=1* delims=:" %%i in (tmp/%1) do (
if %%i equ 1 (echo ^<a^>%%j^</a^> > output/%1) else ( if ""%%j""=="""" (echo. >> output/%1) else (echo %%j >> output/%1))
)
endlocal
@echo off
Setlocal enabledelayedexpansion
set firstline=1
for /F "delims=" %%i in (%1) do (
if !firstline! equ 1 (echo ^<a^>%%i^</a^> > output/%1) else (echo %%i >> output/%1)
set firstline=0
)
endlocal
第二个bat文件,假如叫做run.bat,使用for 循环为本目录下面每一个txt文件调用第一个bat进行处理,代码如下:
@echo off
for %%i in (*.txt) do (
handlefile.bat %%i
)
把两个bat文件放到你的txt文件的目录里面,再创建一个叫做output的文件夹,运行run.bat就可以了。
这样做基本上能够满足需求,有2点需要注意的,1是文件名不能有空格,2是文件里面不能有空行。对于第一点,暂时没想到什么好的办法,只能靠人来保证了。第二点可以有解决方案,就是把第一个handlefile.bat的内容替换为如下,这个办法是使用findstr先保证读取的文件每一行都不是空行,然后再进行处理,运行方法更上面一样,只是多创建一个tmp文件夹
@echo off
Setlocal enabledelayedexpansion
findstr /n .* %1>tmp/%1
for /F "tokens=1* delims=:" %%i in (tmp/%1) do (
if %%i equ 1 (echo ^<a^>%%j^</a^> > output/%1) else ( if ""%%j""=="""" (echo. >> output/%1) else (echo %%j >> output/%1))
)
endlocal
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用批处理,具体代码网上有
更多追问追答
追问
嗯 就是批处理 我找不到 能帮我找一下么
追答
额 你这个是要替换一段字符啊。你下载CharFind这个软件。
选择你要替换的目录 填写被替换字符 和替换字符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询