2010-09-17 4 views
12

cela peut sembler basique mais existe-t-il un moyen de créer un lot pour supprimer char d'une chaîne à partir d'un fichier txt. ?Batch pour supprimer caractère à partir d'une chaîne

Si je l'ai déjà ce dans le fichier txt

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

donc est-il un moyen de créer un fichier batch qui supprimera le .png à la fin de montrer que dans un nouveau fichier txt

2005060 
2005070 
2005080 
2005090 

Merci pour toute aide sur ce! :)

+0

Quelle plate-forme? Les fenêtres? Si oui, PowerShell est-il installé? –

+0

Je suis sur la plate-forme Windows – steven

Répondre

19

Vous pouvez le faire comme par le script de commande suivante:

@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 

Ce sorties:

2005060.png 
2005060 

La ligne magique, bien sûr, est:

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

ce qui supprime les quatre derniers caractères.


Si vous avez un fichier testprog.in avec des lignes qu'elle lui, comme:

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

vous pouvez utiliser une légère modification:

@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 

qui sort:

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

Gardez juste à l'esprit qu'il ne produira pas de lignes vides (bien que fera lignes avec des espaces sur eux).

Cela peut ne pas poser de problème selon ce qui est autorisé dans votre fichier d'entrée. Si c'est un problème, mon conseil est de mettre la main sur CygWin ou GnuWin32 (ou Powershell si vous l'avez sur votre plate-forme) et d'utiliser de vrais langages de script.

+0

Juste essayé, il n'y avait pas de problème avec le fonctionnement. Merci encore!!! – steven

+0

@steven, vous devriez accepter la réponse alors. –

1

Si vous essayez de lire un répertoire de fichiers .png et de générer une liste sans extensions? Essayez ceci:

@echo off 

    echo. > testprog.txt 

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

    start testprog.txt 
7

Ce qui fonctionne le mieux pour moi:

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

credit

+0

Merci beaucoup. Fonctionne comme un charme. – knkarthick24

Questions connexes