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

[问题求助] 如何从文本中提取第一行数字用于sed中的参数

如题,一个文件夹有文件a.out、a.out.txt、b.out、b.out.txt、c.out、c.out.txt......,其中*.out内容包括很多字符,*.out.txt只有一个数值。我的目的是删除*.out中的一行,要求删除这一行的行号是其对应的*.out.txt里的数值。请问大家这个命令该如何写?

回复 1# dingniu2
  1. @echo off
  2. @setlocal enabledelayedexpansion
  3. :main
  4.     for /R %%i in (*.out) do call:deal %%i
  5. pause
  6. goto:eof
  7. :deal
  8.     set /P want=<%~1.txt
  9.     set /A want=want-1
  10.     call:fopen %~1 temp
  11.     del %~1
  12.     set /A len=fopen_len-1
  13.     for /L %%i in (0,1,%len%) do if %%i NEQ %want% echo=!temp[%%i]!>>%~1
  14. goto:eof
  15. :fopen
  16.     rem %~1 为读取文件名,%~2为储存的变量名
  17.     rem 若无%~2,使用%~n1作为储存的变量名
  18.     set fopen_file=%~1
  19.     if "%~2"=="" (
  20.         set fopen_vale=%~n1
  21.     ) else (
  22.         set fopen_vale=%~2
  23.     )
  24.     set fopen_len=0
  25.     for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
  26.         set %fopen_vale%[!fopen_len!]=%%j
  27.         set /A fopen_len+=1
  28.     )
  29. goto:eof
复制代码
默认行号从1开始。
    建议先备份,出现意外概不负责。

TOP

返回列表