2017-08-11 29 views
2

文字列を含まないすべての行を削除する機能が既にあります。一般的な文字列で使用すると効果的です:Windowsバッチ:文字列内の "["で文字列を検索する

@echo off 
set "string_to_find=level.waypoints[" 
for /f "tokens=*" %%a in ('dir /B *.gsc') do (
      set "tempfile=%temp%\%%a" 
      if exist "%tempfile%" del "%tempfile%" >NUL 
      findstr /C:"%string_to_find%" "%~dp0\%%a" >> "%tempfile%" 
      if not errorlevel 1 (
         del "%%a" >NUL 
         move /Y "%tempfile%" "%~dp0\%%a" >NUL 
         if exist "%tempfile%" del "%tempfile%" >NUL 
         echo File "%~dp0\%%a" processed successfully 
      ) else (
      echo Problem processing file "%~dp0\%%a" 
      ) 
) 

"level.waypoints"( "[")がなくてもうまく動作しますが、保存したくない行は削除されません)私は "level.waypoints"を検索する必要がありますが、本当に必要な行をすべて削除する必要がありますが、char [""はすべてが間違ってしまったり、一時ファイルが壊れてしまい、 "file not "見つけた" [""それは動作させるように、しかし私はそれを見つけることができない...運がない多くのtryed。 :/

文字列 "level.waypoints"を検索するにはどうしたらいいですか?

@jmoonにより送信されたリンクでは感謝

+1

エスケープ文字が必要です。これを見てください:https://ss64.com/nt/syntax-esc.html – jmoon

+2

haven'trはあなたのスクリプトを試しましたが、 'findstr/c:" level.waypoints ["* .txt'は私のところで正しく動作します。とにかくあなたはpowershellと運が良いよ –

+0

@jmoonありがとう!そのページで、なぜ "^"がうまくいかず、代わりに "\"だけを使用する必要があることがわかりました。素晴らしい今働いて!乾杯! – Hajas

答えて

2

は言う:

特殊なケース コマンドの数が少ない代わりに、エスケープ文字としてわずかに異なるルール、FINDSTR、REGとRUNAS全ての使用\に従ってください^

試してみました。最後の文字列は "level.waypoints \ [

よろしくです!

関連する問題