我已经有了一个可以实现修改SRCHASST.INF文本的批处理(代码的第一部分,网站好像不让在一张帖子里写两个代码)。
现在想用FOR语句来简化它,也是为了学习。但新的语句无法通过。
问题出在set hy=!hy:~0=!这一句上。它要求删除%n%这一行。如果是修改产生一个有值的结果,这一句还行。但要输出空值,就不行了。请教怎么个改法才好呢?- 可用的原代码:
-
- @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
复制代码 附件:SRCHASST.IN_原件,UNICODE文本,上传时加了个.inf扩展名,使用前删除掉。 |