2012-02-21 53 views
8

我该怎么做?我尝试过:删除批处理文件中var的前3个字符?

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 

我只是想尽量缩短以及仍显示错误。

+0

没什么不对,适合我。 – 2012-02-21 04:51:22

+0

也适用于我。 – Kobra 2012-02-21 04:57:46

回答

7

我刚刚尝试过它,它的工作原理与您的预期相同。你有什么?

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)某些退出条件,如果到达行尾并且没有匹配。我的怀疑是这是什么导致你看到的错误,因为你的输入文件可能不满足这个条件。

+0

这不是确切的代码......它只是一个例子。坚持我会尝试一些。 – BBMAN225 2012-02-21 04:58:15

+0

这里'if%line:〜0,3%== err echo。%line:〜3%>>“%file%.bat”'这是我得到错误的部分。 – BBMAN225 2012-02-21 05:00:34

+1

我认为你可能会遇到错误,因为你的代码正在逐行读取输入文件的内容,然后通过检查错误来循环。问题是你的代码永远不会停止。它始终保持循环,这就是为什么它会抛出一个错误 - 这可能是类似于**#line:〜3这样的错误。**它告诉你,你正在尝试处理一条不存在的行。你需要退出条件。我想提供帮助,但是您还没有明确说明您希望代码执行的内容。 – 2012-02-21 05:30:56