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

TOP

本帖最后由 meiszp 于 2024-4-15 11:05 编辑

回复 4# aloha20200628
谢谢热心帮助,试验了下代码。如果文件夹下全是试验的txt文件,运行成功。
但如果有其他的txt文件,就会输出文件名。

TOP

本帖最后由 meiszp 于 2024-4-15 11:04 编辑

回复 3# 77七
谢谢热心帮助,运行代码显示" press any key to continue…",out.txt为空。

TOP

回复 2# terse
谢谢大佬帮助。如果第1列不是文件名101而是文件里第5行的101,代码该怎么写?

TOP

回复 1# meiszp
用gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )的解决办法如下:
  1. gawk -v"OFS=\t" "/excluding mass coefficients/,/\*{60,}/{if(/MAIN/){A[++i]=$5;A[++i]=$11}if(/\*{60,}/)print substr(FILENAME,1,length(FILENAME)-4),A[1],A[2],A[3],A[4];next}{i=0}" *.txt>out.txt
复制代码

TOP

本帖最后由 aloha20200628 于 2024-4-13 21:27 编辑

回复 1# meiszp

输出结果文件为 out.txt.new,与被处理文件*.txt同目录
用楼主提供的4个示例文件测试通过...
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /f "delims=" %%F in ('dir /b/s/a-d *.txt') do (
  3. set "v=%%~nF"
  4. for /f "tokens=1-4 delims==[" %%1 in ('findstr /ic:"MAIN ST. K =" /ic:"MAIN D.  C =" "%%F"^|more +2') do (
  5. set "v=!v! %%2 %%4"
  6. )
  7. echo,!v: =!
  8. ))>out.txt.new
复制代码

TOP

  1. @echo off
  2. chcp 65001 >nul
  3. cd /d "%~dp0"
  4. (for /f "delims=" %%x in ('dir /b /a-d *.txt ^|find /v "out.txt"') do (
  5. for /f "useback tokens=1-12" %%a in ("%%x") do (
  6. if /i "%%a%%b%%c" equ "excludingmasscoefficients" (
  7. set m=1
  8. ) else if defined m (
  9. if /i "%%a%%b%%c" equ "MAINST.K" (
  10. set /p="%%~nx %%e %%k"<nul
  11. ) else if /i "%%a%%b%%c" equ "MAIND.C" (
  12. echo= %%e %%k
  13. set m=
  14. )
  15. )
  16. )
  17. ))>"out.txt"
  18. pause
复制代码
bat小白,请多指教!谢谢!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%f in ('dir /b /a-d *.txt') do (
  3.      set "exc="
  4.      for /f "usebackq tokens=*" %%i in ("%%f") do (
  5.           if defined exc (
  6.                for /f "tokens=2,3delims==" %%a in ("%%i") do (
  7.                     if "%%b" neq "" (
  8.                          for %%A in ("%%a" "%%b") do (
  9.                               for /f %%c in (%%A) do set "exc=!exc! %%c"
  10.                          )
  11.                     ) else (
  12.                          echo !exc!
  13.                          set "exc="
  14.                     )
  15.                )
  16.           )
  17.           if /i "%%~xni" == "excluding mass coefficients" (set exc=%%~nf)
  18.      )
  19. ))>out.txt 2>nul
  20. pause
复制代码

TOP

返回列表