[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 taofan712 于 2017-2-13 09:41 编辑

放着我来!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do set num=%%a
  4. for /f "tokens=1* delims=:" %%b in ('findstr /n .* 1.txt') do (
  5. set str=%%c
  6. set /a n+=1
  7. if not "!n!"=="%num%" (
  8. echo;!str!>>2.txt
  9. ) else (
  10. echo;!str:~0,-2!ba>>2.txt )
  11. )
复制代码

TOP

本帖最后由 taofan712 于 2017-3-2 22:57 编辑

此题应有更简洁的答法,mark一下,明日再战!
再 GNU前辈的指导下,代码可以缩减成这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do set "ln=%%a" &set "last=%%b"
  3. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do if %%a neq %ln% (echo;%%b) else (echo;!last:~0,-2!ba ))>>2.txt
复制代码

TOP

本帖最后由 taofan712 于 2017-3-2 13:45 编辑

回复 4# Nsqs

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('findstr .* a.txt^|find /v /c ""') do set /a ln=%%a,n=1
  3. echo;%ln%&pause
  4. for /f "tokens=1* delims=:" %%b in ('findstr /n .* a.txt') do set last=%%c
  5. echo;%last%&pause
  6. for /f "tokens=1* delims=:" %%d in ('findstr /n .* a.txt') do (
  7. if %%d neq %ln% (
  8. set line=%%e
  9. echo;!line!
  10. set /a n+=1
  11. ) else (
  12. echo;!last:~0,-2!ba
  13. )
  14. )>>2.txt
复制代码

原以为我能写出更简短代码,没想到比我原答案还更多了几行。。。

TOP

返回列表