当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > 把首行和尾行互换的批处理

DOS/BAT
dos下at命令的用法
常用正则表达式与批注[收藏]
超简单超强悍的清理C盘垃圾文件方法
写了个Vista的服务优化脚本
批处理应用:根据文件内容进行重命名操作
批处理应用:使用FLASHGET检查Mcafee SuperDat更新
批处理应用:恢复Mcafee重命名的可疑病毒文件扩展名
批处理应用-Mcafee手动杀毒脚本
用DOS批处理实现建立文件夹的代码
%time:~0,2% %%内的意思详解
用asp.net实现 取页面中的所有链接
用bat实现定时执行任务的批处理文件
用bat实现的自动关机的代码
批处理(dos/bat)最完整人性化教程
用批处理写的永不被杀的后门
可以实现反复重启的批处理
超级批处理病毒,不错的学习资料
可以实现系统自动关机的批处理
强制与他人QQ聊天的批处理Dos
CMD下的网络安全配置方法

DOS/BAT 中的 把首行和尾行互换的批处理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 269 ::
收藏到网摘: n/a

然后在新文本的首行写入提取到的最后一行,用 findstr 语句过滤掉原文本的第一行和最后一行,在最后一行 之后添加提取到的第一行。
复制代码 代码如下:

@echo off
:: 目的:把首行和尾行互换
:: 思路:
:: 提取第一行和最后一行内容(若首行和最后一行是空行,则提取到的是非空的第一行和非空的最后一行内容),
:: 然后在新文本的首行写入提取到的最后一行,用 findstr 语句过滤掉原文本的第一行和最后一行,在最后一行
:: 之后添加提取到的第一行。
:: 因为 findstr 处理最后一行有条件限制,所以先在最后一行之后生成一个空行,以保证提取的准确性
:: 注意:请保证test.txt中没有敏感字符,没有内容重复的行,并且首行不能为空
::
::
copy test.txt test.bak>nul
echo.>>test.txt
set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
set str=%%i
set /a num+=1
if !num! equ 1 set var=%%i
)
>test_.txt echo.%str%
findstr /b /e /v /c:"%str%" /c:"%var%" test.txt>>test_.txt
>>test_.txt echo.%var%
move test.bak test.txt
start test_.txt
goto :eof
@echo off
:: 可以处理首行为空、行内容重复的情况,
:: 注意:因为 findstr /n 统计行数的时候,会忽略最后一个空行
:: 所以,若在最后有空行的话,请保证空行的个数大于1
findstr /n .* test.txt>tmp1.txt
for /f "tokens=1* delims=:" %%i in (tmp1.txt) do (
if %%i equ 1 set str=%%j
set line=%%i&set var=%%j
)
>tmp2.txt echo %line%:%var%
findstr /b /v /c:"1:" /c:"%line%:" tmp1.txt>>tmp2.txt
echo 1:%str%>>tmp2.txt
echo.>>tmp2.txt
cd.>result.txt
for /f "tokens=1* delims=:" %%i in (tmp2.txt) do >>result.txt echo.%%j
del /q tmp1.txt tmp2.txt
start result.txt