2016-10-17 29 views
0

我已经很接近我想要什么和脚本文件是否只清洁运行良好,但大多有几个每行注释,他们几个人在/* ... */里面的块需要删除其他垃圾。过程包含在几个文件中的字符串(Windows批处理)

所以我只是想处理具有字符串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%到这些循环,但我在许多不同的方式tryed ,但没有成功,但可悲...你能帮我吗?

非常感谢你!

+0

请解释一下你正在努力实现由[编辑]脚本(http://stackoverflow.com/什么帖子/ 40093874 /编辑)你的问题!如果没有反向工程,就不可能得到你的意图... – aschipfl

+0

@aschipfl FOR是完美的,并且工作正常...我只是希望语法将其更改为仅使用此字符串处理行。或者在执行之前从每个* .gsc文件中清除everyline的脚本也可以工作,我认为这会更简单。 – Hajas

+0

你尝试更改设置你的'从'( “%% F”)/ F'循环''到( '发现 “level.waypoints” “%%〜F”')'?你正在努力实现的是什么? – aschipfl

回答

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 
) 
+0

这个简单的崩溃,我甚至不能关机用任务管理器。 – Hajas

+0

一旁的崩溃,我需要删除每行不具备该字符串,并且不希望新文件,原始可以更换,没有问题,谢谢! – Hajas

相关问题