我的arqtext.txt有以下数据集:
A,B,C,
(123 or 456) and (789 or 012),1,5,
(456 or 654) and (423 or 947),3,6,
(283 or 335) and (288 or 552),2,56,我希望将最后3行中的第1列更改为脚本中的新字符串集,其结果如下:
A,B,C,
roi1,1,5,
roi2,3,6,
roi3,2,56,但是我的代码只输出标题"A,B,C ":
@echo off
setlocal EnableDelayedExpansion EnableExtensions
set roi1="(123 or 456) and (789 or 012)"
set roi2="(456 or 654) and (423 or 947)"
set roi3="(283 or 335) and (288 or 552)"
set /p "header="<"arqtext.txt"
echo %header%>arqtextnovo.txt
for /f "skip=1 tokens=1,* delims=," %%a in ("arqtext.txt") do (
if %%a=="roi1" (
echo roi1,%%b>>arqtextnovo.txt
)
if %%a=="roi2" (
echo roi2,%%b>>arqtextnovo.txt
)
if %%a=="roi3" (
echo roi3,%%b>>arqtextnovo.txt
)
)
rem EXIT /B
pause>nul发布于 2022-09-01 02:04:45
我就是这样做的:
@echo off
setlocal EnableDelayedExpansion
set "roi[(123 or 456) and (789 or 012)]=1"
set "roi[(456 or 654) and (423 or 947)]=2"
set "roi[(283 or 335) and (288 or 552)]=3"
set /P "header=" < "arqtext.txt"
> arqtextnovo.txt (
echo %header%
for /f "usebackq skip=1 tokens=1,* delims=," %%a in ("arqtext.txt") do (
echo roi!roi[%%a]!,%%b
)
)
rem EXIT /B
pause>nul如果文件名包含在引号中,则
for /F命令需要"usebackq“选项。否则,它将处理包含引号的文字字符串。让我们假设这个方法:
set /P "selector=Enter selector: "
if "%selector%" equ "nine" set result=9
if "%selector%" equ "seven" set result=7
if "%selector%" equ "five" set result=5相反,您可以定义一个名为“value”的数组:
set "value[nine]=9"
set "value[seven]=7"
set "value[five]=5"..。然后以这样的方式直接得到结果值:
set "result=!value[%selector%]!"此代码中使用了相同的方法。但是,如果输入值不是数组元素之一,则没有指定会发生什么情况。
有关批处理文件中数组管理的进一步说明,请参阅this answer。
https://stackoverflow.com/questions/73561867
复制相似问题