bat脚本对文件进行批处理的问题

我想批处理的文件有个共同特征,即开头几行后有一行是[Notitle]我希望批量删除所有文件在该标志前的所有内容,然后在文本前面追加一小段文字。追加的文字对所有文件是高度类... 我想批处理的文件有个共同特征,即开头几行后有一行是

[No title]

我希望批量删除所有文件在该标志前的所有内容,然后在文本前面追加一小段文字。

追加的文字对所有文件是高度类似的,只有一处有包含各个文件的文件名。

自己懂点编程,但是对bat很不熟悉,希望路过的高中帮忙看看。
自己大概的思路就是先循环地判断文本第一行,如果不是“[No title]”就把整行删掉(原来的第二行就变成了第一行),直到第一行是“[No title]”为止,然后再向文本开头加入需要的文本。求助具体的代码,如有其它好的思路也可以~

解决问题后追加赏金~
@echo off
echo %1
copy %1 0.tmp
for /f "tokens=1* delims=:" %%i in ('Type 0.tmp^|Findstr /n ".*"') do (
if "%%j"=="[No Title]" goto out
more +1 0.tmp > 1.tmp
del 0.tmp
ren 1.tmp 0.tmp
)
:out
copy "calinfo.ini"/a+"0.tmp"/a 1.tmp
del 0.tmp
del %1
ren 1.tmp %1

我通过多个文件实现,这是主程序,批量通过另一个脚本引用主程序,插入的语句引自主程序引用的"calinfo.ini"文件,如下
%chk={对应的文件名}.chk
# opt b3lyp/6-31g(d) geom=connectivity

现在就差一件事,就是最前面那句话希望能根据文件名改变
展开
 我来答
依梦琴瑶
高粉答主

2016-07-29 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
@echo off
for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
    call :Action "%%~a"
    if exist temp$ move temp$ "%%~a"
)
pause
exit
:Action
for /f "tokens=1 delims=:" %%i in ('findstr /n /x /c:"[No title]" "%~1"') do (
    (echo 这行就是需要添加的特定内容
    echo [No title]
    more +%%i "%~1")>temp$
    goto :eof
)
goto :eof

 以上代码针对脚本目录中的txt文件进行处理(不包含子目录)。请自行修改!

更多追问追答
追问
非常好~不过我已经用别的方法实现了大部分功能,现在还差一个问题

后添加的文本里有一行这样类似的语句

A=文件名.abc

文件名需要根据每个文件的文件名来设定,这要如何实现呢
追答

那我也只能根据我的代码修改啊!

我的代码中

echo 这行就是需要添加的特定内容

更改为

echo A=%~1

 

如果需要你的代码实现这个,你就得贴出你的代码了!

greatlmy4
2016-07-29 · TA获得超过1330个赞
知道小有建树答主
回答量:1446
采纳率:76%
帮助的人:312万
展开全部
你的问题用bat是不行的
追问
很有意思,就在刚才我已经完成了对单个文件的上诉操作了,如果你还想帮我,可以教教我怎么设置外部参数,我想用另一个脚本来调用这个已经成功的单个操作脚本实现批处理,谢谢~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式