到目前为止我的代码:
for /F "tokens=*" %%A in (#opm.txt) do set str=%%A
set str=%str:~0,3%
@echo.%str% > #tags.txt
基本上,我有一个巨大的清单,我试图从中获取前三个字母,但是,我现在只能从清单中得到其中一个。例如:
“鹰”这个词在名单上。最终结果应该是 EAG(最好是大写)。
有小费吗?
到目前为止我的代码:
for /F "tokens=*" %%A in (#opm.txt) do set str=%%A
set str=%str:~0,3%
@echo.%str% > #tags.txt
基本上,我有一个巨大的清单,我试图从中获取前三个字母,但是,我现在只能从清单中得到其中一个。例如:
“鹰”这个词在名单上。最终结果应该是 EAG(最好是大写)。
有小费吗?
如果要在 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?