2012-02-21 34 views
8

Làm cách nào để thực hiện việc này? Tôi đã thử:Xóa 3 ký tự đầu tiên trong tập tin batch trong var?

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

Ví dụ: nếu tôi nhập "Hello World", nó sẽ lặp lại "lo World".

Xin lỗi tôi quá mơ hồ. Mã đó không thực sự là mã nhưng đây là mã:

@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 

Tôi chỉ cố gắng làm cho mã này ngắn hơn vẫn hiển thị lỗi.

+0

Không có gì sai, phù hợp với tôi. –

+0

Làm việc cho tôi. – Kobra

Trả lời

7

Tôi vừa thử nó và nó hoạt động giống như bạn mong đợi. Bạn đang nhận được gì?

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:\> 

Vì vậy - có vẻ như bạn cần hai thứ: 1) Một số loại điều kiện thoát khỏi vòng lặp thứ hai của bạn. Giữa :code nhãn và goto code khi điều kiện phù hợp là hit (ví dụ, if %line:~0,3% == err) Không biết những gì đang mong muốn từ mã của bạn, tôi sẽ đặt một cái gì đó như sau

if %line:~0,3% == err echo.%line:~3% & pause & exit 

này sẽ tạm dừng và thoát khi nó tìm dòng phù hợp

2) Một số loại điều kiện thoát nếu bạn đến cuối dòng và không có kết quả khớp. Nghi ngờ của tôi là đây là những gì gây ra lỗi mà bạn đang nhìn thấy như tập tin đầu vào của bạn có lẽ là không đáp ứng điều kiện này.

+0

Đó không phải là mã chính xác ... Nó chỉ là một ví dụ. Giữ tôi sẽ thử một cái gì đó. – BBMAN225

+0

Ở đây 'if% line: ~ 0,3% == err echo.% Line: ~ 3% >>"% file% .bat "' đây là phần mà tôi gặp lỗi. – BBMAN225

+1

Tôi nghĩ rằng bạn có thể gặp lỗi vì mã bạn đang đọc qua nội dung của dòng tệp đầu vào của bạn theo dòng và sau đó nó lặp qua kiểm tra lỗi. Vấn đề là mã của bạn không bao giờ dừng lại. Nó lặp đi lặp lại mãi mãi, đó là lý do tại sao nó đang ném một lỗi - có lẽ một cái gì đó như ** # line: ~ 3 là bất ngờ tại thời điểm này. ** Nó nói với bạn rằng bạn đang cố gắng để xử lý một dòng không tồn tại. Bạn cần một điều kiện thoát. Tôi muốn giúp đỡ nhưng bạn đã không làm cho nó rõ ràng những gì bạn mong muốn mã để làm. –

Các vấn đề liên quan