2

到目前为止我的代码:

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

基本上,我有一个巨大的清单,我试图从中获取前三个字母,但是,我现在只能从清单中得到其中一个。例如:

“鹰”这个词在名单上。最终结果应该是 EAG(最好是大写)。

有小费吗?

4

1 回答 1

1

如果要在 for 循环中执行多个语句,则需要使用括号:

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

请注意,左括号与 for ... do ... 语句位于同一行。在这种情况下,您需要使用延迟扩展来操作循环内的变量(这使得用感叹号括起来的变量被原地解析):

@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

于 2012-09-12T07:33:33.480 回答