2016-10-26 7 views
0

複数のtxtファイルを一度に消去する必要があります。文字列のない行をすべて消去する必要があります。 Windowsバッチファイルにする必要があります。バッチファイル:文字列を持たない複数のファイルからすべての行を削除しますか?

exemple:

set string="abcd" 
for each *.txt file do (
    if line doesn't have string delete line 
) 

私は単なる文字列を持っていない行を削除オリジナルのものを更新し、新しいファイルを生成する必要はありません。

もちろん、一時ファイルを作成して名前を変更せずに元のファイルも上書きすることができます。あなたはどうやってそれをするかは関係ありません、結果は同じファイルですが、きれいです。

ありがとう

+0

あなたの代名詞が混ざっています。元のファイルをどのように*** ***変更するかは関係ありません。結局あなたの仕事です。また、文字列を含むテキストファイルから行を削除する方法を検索すると、多くの既存の例が見つかります。 – dbenham

答えて

1

修正されたエラーを修正しました。乾杯!

@echo off 

    set "string_to_find=some string" 
    for /f "tokens=*" %%a in ('dir /B *.txt') 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" 
       ) 
    ) 
+0

は逆の処理をしていますが、文字列で行を削除していますが、それらを保持して残りを削除したいと思います。また、Fileがこの行の有効なコマンドではないと言うエラーも出ています。 'File"%〜dp0 \ %% a "processed successfully"また前に 'setlocal enableDelayedExpansion'行が必要です。それは非常に近いです、選択を逆転する方法? thx – Hajas

+0

私は行の前に 'echo'を置いてエラーを修正しました。実際に関心のあるものを削除して、削除して保存してはならない部分を言っているdel/moveコマンドに問題があります。 thx – Hajas

+0

は 'findstr'コマンドで'/V'を削除して正常に動作します! thx – Hajas

関連する問題