
批處理如何實現通配符查找替換文本中指定字符串假設有一個包含如下內容的文本文件1.txtLine131TextA Line2561TextB Line3212TextC Test453TextD Line50725.76TextELine6TextF Test153TextD Test85.3TextDLine7TextG需求是: 在同時包含Test和TextD的行中,將Test和TextD之間的字符替換成固定的7.0,生成2.txt代碼如下:
- @echo off
- (for /f tokens=* delims= %%a in (1.txt) do (
- set var=%%a
- setlocal enabledelayedexpansion
- echo !var!|findstr Test.*TextD>nul&& set var= Test7.0TextD
- echo !var!
- endlocal
- )
- )>2.txt
- pause
nclick="copycode($('code0'));">復制代碼
問題:1、經實際測試,以上代碼是可以實現基本功能的,可是為了使2.txt格式統一,set var= Test7.0TextD中的空格數目是手動設定的,能否自動判斷原文件中對應行前面的空格或者間隔符的個數,生成到2.txt中?2、為什么setlocal enabledelayedexpansion必須在For語句內部執行?經反復驗證,如果放在For語句外面的話,當1.txt中一些特殊符號的時候會被遺漏,比如感嘆號!,也就是說,如果1.txt中有感嘆號的話,2.txt中就不會有。3、以上代碼執行時效率很低,能否有更好的方法?[
最后由 kent 于 -7-2 10:35]