2012-09-12 16 views
2

我迄今为止代码:我似乎无法得到这个字符串批量循环,我只能得到一行输出。

for /F "tokens=*" %%A in (#opm.txt) do set str=%%A 
set str=%str:~0,3% 
@echo.%str% > #tags.txt 

基本上,我有一个巨大的东西,我试图采取从的前三个字母列表,但是,我只是最终得到的这些东西一个从列表中正确现在。例如:

单词'eagle'在名单上。最终结果应该是EAG(最好是大写)。

任何提示?

回答

1

如果你想要做一个以上的语句在for循环中,你需要使用括号:

for /F "tokens=*" %%A in (#opm.txt) do ( 
    set str=%%A 
    set str=%str:~0,3% 
    @echo.%str% > #tags.txt 
) 

注意,打开支架在同一行作为... ...做陈述。在这种情况下,你需要使用延迟扩展来操纵循环内的变量(这使得封闭与感叹号变量到位解决):

@setlocal ENABLEDELAYEDEXPANSION 

for /F "tokens=*" %%A in (#opm.txt) do ( 
    set str=%%A 
    set str=!str:~0,3! 
    @echo.!str! >> #tags.txt 
) 

@endlocal 

也请注意,重定向的语法改为从>>> 。每次执行语句时,单个括号重定向将覆盖#tags.txt。双括号重定向在文件末尾附加行(您可能希望确保文件在循环之前为空)。

无需外部工具,批量替换字母的大小写相当复杂。这不是一个文本处理友好的技术。你有没有考虑Python而不是?

+0

我正在尝试学习批处理,而我的这个小项目,所以Python是不是一个真正的选择。但是,这是完美的!感谢您的洞察力。 – JuniorD

相关问题