我尝试使用Google搜索,但我找不到明确的解决方案,所以我问你。
我不知道怎么放这个,但是,假设我们有一个TEXTFile.txt
,其中包含一个带有随机字母和数字的字符串(如AJS12U3254FU8AD)。现在,我想要做的是让用户输入一个set /p number=
的数字,然后从该数字代表的字符串中回显数字/字符。例如(在前面的字符串示例中)如果用户输入数字3,我希望批处理脚本回显字母S
,如果他输入4到echo 1
,依此类推。
在我的小经验中,我认为这个问题归结为来自变量的某些数字,如echo %var:~0,1%
,但不是使用整数来指定数字,我想在该过程中插入用户的数字。类似于echo %var:~0,%number%%
。
这可能吗?或者还有其他方法可以做到这一点吗?
答案 0 :(得分:0)
批处理中的变量(命令行参数除外)与%
缠绕在一起,因此您无法编写%var:~0,%number%%
,因为变量在第一个%
结束并且结果在语法错误
您需要使用delayed expansion
setlocal EnableDelayedExpansion
for /f "delims=" %%x in (TEXTFile.txt) do set var=%%x
set /p number="Input number: "
echo !var:~%number%,1!
答案 1 :(得分:0)
假设您有想要的文本行作为变量行,您可以执行类似
的操作@echo off
set number=3
set line=AJS12U3254FU8AD
for /l %%i in (%number%,1,%number%) do (
call set character=%%line:~%%i,1%%
)
echo %character%
答案 2 :(得分:0)
强制延迟扩展(与变量中的exclcmation标记不冲突)的另一种方法是使用伪调用。
%number%
,而%%
加倍
减少到一个。%
。@Echo off
Set "var=AJS12U3254FU8AD"
set /p "number=Enter a number:"
Call echo %%var:~%number%,1%%