我该怎么做呢?我试过了:

set /p var=""
set var=%var:~3%
echo %var%

例如,如果我键入“Hello World”,则应回显“lo World”。

对不起,我太含糊了。该代码不是真正的代码,而是:
@echo off
setlocal EnableDelayedExpansion
set /p file=""
set cnt=0
for /F "delims=" %%j in (%file%.txt) do (
  set /A cnt+=1
  set line!cnt!=%%j
)
set cde=0
:code
set /a cde+=1
set line=!line%cde%!
if %line:~0,9% == err echo.%line:~3%
goto code

我只是想让它更短,并且仍然显示错误。

最佳答案

我刚刚尝试了一下,它的工作原理就和您期望的一样。你得到什么?

C:\>type test.bat
set /p var=""

set var=%var:~3%

echo %var%
C:\>test

C:\>set /p var=""
Hello World

C:\>set var=lo World

C:\>echo lo World
lo World

C:\>

所以-看来您可能需要两件事:
1)您第二个循环中的某种退出条件。匹配条件被击中时的:code标签和goto code之间(即if %line:~0,3% == err)
不知道您的代码需要什么,我将放置以下内容
if %line:~0,3% == err echo.%line:~3% & pause & exit

找到匹配的行后将暂停并退出

2)如果您到达了行尾并且没有匹配项,则存在某种退出条件。我怀疑这是导致您看到的错误的原因,因为您的输入文件可能不满足此条件。

10-06 10:08
查看更多