2016-10-17 7 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%を追加しますが、私は、多くの異なる方法でしようと試みで考えていましたしかし、まだ悲しいことに成功しなかった...あなたは私を助けてくれますか?

ありがとうございます!

+0

を含む各.gscファイルの行を削除したい場合は、[編集](http://stackoverflow.com/でスクリプトを達成しようとしているかを説明してくださいposts/40093874/edit)あなたの質問!リバースエンジニアリングがなければ、あなたの意図を得ることはできません。 – aschipfl

+0

@aschipfl FORは完璧で、うまくいきます...私は文法をこの文字列の行だけに変更したいと思います。またはこれを実行する前にすべての* .gscファイルからeverylineを削除するスクリプトも動作しますが、これはよりシンプルになると思います。 – Hajas

+0

'for/F'ループのセットを'( "%% F") 'から'( '' level.waypoints "%%〜F" ') 'に変更しようとしましたか?それはあなたが達成しようとしているものですか? – aschipfl

答えて

1

あなただけの文字列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

関連する問題