不好意思,手快没考虑清楚...应该是:- @echo off&setlocal enabledelayedexpansion
- (for /f %%a in ('find /c /v ""^<a.txt') do (
- for /l %%b in (1 2 %%a) do (
- set a=&set b=
- set /p a=
- set /p b=
- echo !b!&echo !a!
- )
- ))<a.txt>b.txt
复制代码 如果要修改多个文本,改一下就行了:- @echo off&setlocal enabledelayedexpansion
- for %%i in (*.*) do (
- (for /f %%a in ('find /c /v ""^<a.txt') do (
- for /l %%b in (1 2 %%a) do (
- set a=&set b=
- set /p a=
- set /p b=
- echo !b!&echo !a!
- )
- ))<%%i>$
- move $ "%%i"
- )
复制代码 findstr 确实是为了兼容空行,但是此处应该直接用 find 获取行数比较简单,我把两种效果的思路搞混了。
至于 setlocal 和 endlocal 则是为了开闭一个临时的变量表用于临时保存变量,避免影响之后的操作。其实也不够严谨,因为无法保证 setlcoal 之前 变量a 和变量b 都为空,所以还是应该直接用 set 清空变量 |