[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 77七 于 2024-3-14 17:41 编辑
  1. @echo off
  2. cd /d "%~dp0"
  3. set /a b=-2,d=-2
  4. for %%i in (*.txt) do (
  5. setlocal
  6. call :1 "%%i"
  7. endlocal
  8. )
  9. pause & exit
  10. :1
  11. for /f "delims=" %%a in ('find /c /v "" ^<"%~1"') do (
  12. echo %%a
  13. set n=%%a
  14. )
  15. if %b% gtr 0 (
  16. if %d% gtr 0 (
  17. set /a s=b,e=b+d-1
  18. ) else (
  19. set /a s=b+d+1,e=b
  20. )
  21. ) else (
  22. if %d% gtr 0 (
  23. set /a s=n+b+1,e=s+d-1
  24. ) else (
  25. set /a s=n+b+d+2,e=n+b+1
  26. )
  27. )
  28. echo 删除第 %s% - %e% 行
  29. (for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%~1"') do (
  30. if %%a lss %s% (
  31. echo=%%b
  32. ) else if %%a gtr %e% (
  33. echo=%%b
  34. )
  35. ))>$
  36. move $ "%~1"
  37. exit /b
复制代码
b 为开始行,d 为删除行数,都可以为正、负数
bat小白,请多指教!谢谢!

TOP

回复 3# 77七


   修改30-36行代码,解决行首出现”[“ ”]“丢失问题
  1. (for /f "delims=" %%a in ('find /n /v "" ^<"%~1"') do (
  2. set str=%%a
  3. setlocal enabledelayedexpansion
  4. if %%a lss %s% (
  5. echo=!str:*]=!
  6. ) else if %%a gtr %e% (
  7. echo=!str:*]=!
  8. )
  9. endlocal
  10. ))>$
复制代码
bat小白,请多指教!谢谢!

TOP

返回列表