
[已解決]怎樣用批處理FOR語句修改SRCHASSTINF文本我已經有了一個可以實現修改SRCHASST.INF文本的批處理(代碼的第一部分,網站好像不讓在一張帖子里寫兩個代碼)。現在想用FOR語句來簡化它,也是為了學習。但新的語句無法通過。問題出在set hy=!hy:~0=!這一句上。它要求刪除%n%這一行。如果是修改產生一個有值的結果,這一句還行。但要輸出空值,就不行了。請教怎么個改法才好呢?
附件:SRCHASST.IN_原件,UNICODE文本,上傳時加了個.inf擴展名,使用前刪除掉。nclick="copycode($('code0'));">復制代碼
- 可用的原代碼:
- @echo off&setlocal enabledelayedexpansion
- (for /f tokens=1* delims=: %%a in ('findstr /n .* SRCHASST.tmp') do if %%b== (echo/) else (
- set hy=%%b
- if /i not !hy:~0,7!==msgr3en (
- if /i not !hy:~0,8!==nls302en (
- if /i not !hy:~0,8!==courtney (
- if /i not !hy:~0,4!==earl (
- if /i not !hy:~0,5!==rover (echo !hy!)
- ))))))>SRCHASST.INF
- 有問題的新代碼:
- set pth=SRCHASST
- set n=msgr3en.dll nls302en.lex courtney.acs earl.acs rover.acs
- expand %pth%.in_ %pth%.inf
- type %pth%.inf>%pth%.tmp
- @echo off&setlocal enabledelayedexpansion
- (for /f tokens=1* delims=: %%a in ('findstr /n .* %pth%.tmp') do if %%b== (echo/) else (
- set hy=%%b
- for %%c in (%n%) do if /i !hy:~0,-5!==%%c set hy=!hy:~0=!
- echo !hy!
- ))>%pth%.inf.tmp
- move /y %pth%.inf.tmp %pth%.inf
- del /f /q *.tmp

