2012-02-21 17 views
8

¿Cómo hago esto? Intenté:Eliminar los primeros 3 caracteres en var en el archivo por lotes?

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

Por ejemplo, si escribo "Hello World" debería aparecer "lo World".

Lo siento, fui demasiado vago. Ese código no es realmente el código, pero esto es:

@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 

Yo sólo estaba tratando de hacer que sea más corto, así que aún conserva el error.

+0

Nada mal, funciona para mí. –

+0

Funciona para mí también. – Kobra

Respuesta

7

Lo probé y funciona exactamente como era de esperar. ¿Que estas obteniendo?

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

Por lo tanto - que parece que necesita posiblemente dos cosas: 1) algún tipo de condición de salida de su segundo bucle. Entre la etiqueta :code y la goto code para cuando se golpea la condición de coincidencia (es decir, if %line:~0,3% == err) Sin saber lo que se desea desde el código, me pondría algo como lo siguiente

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

Esto hará una pausa y salida cuando se encuentra la línea coincidente

2) Algún tipo de condición de salida si llega al final de las líneas y no hubo coincidencia. Mi sospecha es que esto es lo que está causando el error que está viendo ya que su archivo de entrada probablemente no está satisfaciendo esta condición.

+0

Ese no era el código exacto ... Es solo un ejemplo. Espera, intentaré algo. – BBMAN225

+0

Aquí 'if% línea: ~ 0,3% == err echo.% Línea: ~ 3% >>"% file% .bat "' esta es la parte donde recibo un error. – BBMAN225

+1

Creo que puede estar produciendo un error porque el código que está leyendo está leyendo los contenidos de su archivo de entrada línea por línea y luego está revisando un error. El problema es que tu código nunca se detiene. Sigue dando vueltas para siempre, por lo que arroja un error, probablemente algo así como ** # línea: ~ 3 era inesperado en este momento. ** Le dice que está tratando de procesar una línea que no existe. Necesitas una condición de salida. Me gustaría ayudar pero no has dejado en claro lo que deseas que haga el código. –

Cuestiones relacionadas