2012-02-21 75 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

相關問題