处理包含多个文件中的字符串的每一行(Windows Batch)

时间:2016-10-17 19:08:37

标签: windows file batch-file cmd

我已经非常接近我想要的了,如果文件只是干净的话,脚本运行正常,但是大多数都有几个注释,其中很少有/* ... */块内的其他废话需要被删除。

所以我只想处理具有字符串level.waypoints

的行

这就是我现在所拥有的:

@echo off
setlocal enableDelayedExpansion

set findtext="level.waypoints"
for %%F in (*.gsc) do (
  set "out="
  set "i=x"
  > "%%~nF.cfg" (
    for /f usebackq^ tokens^=2^,4^,5^ delims^=[]^=(^)^;^"^  %%A in ("%%F") do (
      if %%A neq !i! (
        if defined out echo !out!"
        set /a "i=%%A, j=0"
        set "out=set flwp_!i! "!i!"

      ) else (
        set /a j+=1
        if !j! leq 3 (set "out=!out!,%%B") else set "out=!out!,%%C"
      )

    )
    if defined out echo !out!"
    set /a "fim=i+1"
    echo set flwp_!fim! "eof"
  )
)

我在考虑将findstr %findtext%添加到这些循环中,但我尝试了许多不同的方法,但我们还没有成功,但是你能帮助我吗?

非常感谢你!

1 个答案:

答案 0 :(得分:1)

如果您只想删除包含字符串.gsc的每个level.waypoints文件的行

@echo off 
set "findtext=level.waypoints"

for %%a in (*.gsc) do (
    for /f "delims=" %%b in ('type "%%a"') do (
       echo %%b | find /i "%findtext%" >nul || echo %%b >>"%%~na_New%%~xa"
     )
    move "%%~na_New%%~xa" "%%a" 2>nul
)