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
现在就差一件事,就是最前面那句话希望能根据文件名改变 展开
[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
现在就差一件事,就是最前面那句话希望能根据文件名改变 展开
2个回答
展开全部
@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
如果需要你的代码实现这个,你就得贴出你的代码了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询