[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
for /f 默认会忽略以分号开头的行
可以这样:
  1. @echo off & setlocal enabledelayedexpansion
  2. (for /f "delims="eol^= %%i in ('type "%~nx1"')do (
  3.     set "m=%%i"
  4.     if defined z (echo;)else echo;!m!
  5.     if "!m:~0,8!" == "Solution" (set z=1) else (set z=)
  6. ))>"%~n1-2.txt"
  7. pause
复制代码

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in ('findstr /n .* "%~nx1"')do (
  3.     set "m=%%i" & set "m=!m:*:=!"
  4.     if defined z (echo;)else echo;!m!
  5.     if "!m:~0,8!" == "Solution" (set z=1) else (set z=)
  6. ))>"%~n1-2.txt"
复制代码
1

评分人数

TOP

回复 4# pan528


    这样好了:
  1. @echo off & setlocal enabledelayedexpansion
  2. (for /f "delims="eol^= %%i in ('type "%~f1" ^& echo;/')do (
  3.     set "s1=%%i"
  4.     if defined z (echo;) else echo;!s2!
  5.     if "!s1:~0,8!" == "Solution" (if "!s2:~0,8!" == "Solution" set z=1) else (set z=)
  6.     set "s2=%%i"
  7. ))>"%~dpn1-2%~x1"
复制代码
  1. @if (0)==(0) echo off
  2. type "%~f1" | cscript //nologo //e:jscript "%~f0" > "%~dpn1-2%~x1"
  3. pause & exit
  4. @end
  5. var s = WSH.StdIn.ReadAll() + '\r\n'
  6. WSH.StdOut.Write(s.replace(/(^Solution)(.*\n)(\1.*\n)+/gm, '$1$2'))
复制代码

TOP

回复 7# pan528


    我在win10测试能够运行,你用的什么系统? 与2楼也就只有绝对路径与相对路径之间的区别
把 "%~f1" 改成 "%~nx1"
把 "%~dpn1-2%~x1" 改成 "%~n1-2.txt"
试下

TOP

返回列表