2010-09-17 14 views
12

esto puede parecer básico, pero ¿hay alguna manera de crear un lote para eliminar char de una cadena de un archivo txt? ?Lote para eliminar caracteres de una cadena

Si ya tengo esta dentro del archivo .txt

2005060.png 
2005070.png 
2005080.png 
2005090.png 

Entonces, ¿hay una manera de crear un archivo por lotes que se retire la .png al final para mostrar sólo esto en un nuevo archivo .txt

2005060 
2005070 
2005080 
2005090 

Gracias por la ayuda sobre esto! :)

+0

¿En qué plataforma? Windows? Si es así, ¿tiene instalado PowerShell? –

+0

Estoy en la plataforma de Windows – steven

Respuesta

19

usted puede hacerlo de acuerdo con la siguiente secuencia de comandos:

@setlocal enableextensions enabledelayedexpansion 
@echo off 
set variable=2005060.png 
echo !variable! 
if "x!variable:~-4!"=="x.png" (
    set variable=!variable:~0,-4! 
) 
echo !variable! 
endlocal 

Este salidas:

2005060.png 
2005060 

la línea de magia, por supuesto, es:

set variable=!variable:~0,-4! 

que elimina los últimos cuatro caracteres.


Si usted tiene un archivo testprog.in con las líneas que ella, como:

2005060.png 
1 2 3 4 5  leave this line alone. 
2005070.png 
2005080.png 
2005090.png 

puede utilizar una ligera modificación:

@setlocal enableextensions enabledelayedexpansion 
@echo off 
for /f "delims=" %%a in (testprog.in) do (
    set variable=%%a 
    if "x!variable:~-4!"=="x.png" (
     set variable=!variable:~0,-4! 
    ) 
    echo.!variable! 
) 
endlocal 

que da salida:

2005060 
1 2 3 4 5  leave this line alone. 
2005070 
2005080 
2005090 

Solo tenga en cuenta que no generará líneas vacías (aunque hará líneas con espacios en ellas).

Eso puede no ser un problema dependiendo de lo que está permitido en su archivo de entrada. Si es un problema, mi consejo es que tenga en sus manos CygWin o GnuWin32 (o Powershell si lo tiene en su plataforma) y use algunos lenguajes de scripting reales.

+0

Acabo de probarlo no tuve ningún problema con su ejecución. ¡¡¡Gracias de nuevo!!! – steven

+0

@steven, Deberías aceptar la respuesta entonces. –

1

Si está tratando de leer un directorio de archivos .png y muestra una lista sin extensiones? Prueba esto:

@echo off 

    echo. > testprog.txt 

    for /R "C:\Users\%USERNAME%\Documents" %%f in (*.png) do (
     echo %%~nf >> testprog.txt 
     ) 

    start testprog.txt 
7

Esto funcionó mejor para mí:

@echo off 
for %%x in (*.png) do echo %%~nx 

credit

+0

Muchas gracias. Funciona de maravilla. – knkarthick24

Cuestiones relacionadas