2010-09-15 5 views
0

J'ai un fichier txt appelé named.txt Est-il possible de créer un fichier batch pour lire toutes les lettres de 2 à 7 lettres de chaque ligne de name.txt et ignorer le reste et le sortir dans un autre fichier txt appelé name2. SMS. Par exemple, j'ai cela dans le fichier txt:fichier batch pour lire des lettres spécifiques à partir d'un fichier texte?

G2010060sample.png
G2010061sample.png
G2010062sample.png
G2010063sample.png

et le fichier batch créerait un nouveau fichier txt comme celui-ci:

2010060.png
2010061.png
2010062.png
2010063.png

+1

Quel système d'exploitation utilisez-vous? Windows, Unix-like? –

+0

J'utilise Windows 7 – steven

Répondre

0

excellente ligne ressource http://ss64.com/nt/syntax.html

@echo off 
if exist output.txt del output.txt 
for /f "delims=" %%i in (input.txt) do call :ParseLine %%i 
goto :eof 


:ParseLine 
set line=%1 
set line=%line:~1,7% 
echo %line%.png>> output.txt 
goto :eof 
+0

Merci beaucoup! fonctionne très bien mais il y a un problème. Quand je l'exécute à nouveau, il répète les noms partout. Y a-t-il un moyen d'arrêter de répéter les noms? Il montre 2010060.png 2010061.png 2010062.png 2010063.png2010060.png 2010061.png 2010062.png 2010063.png – steven

+0

Je ne comprends pas tout à fait ce que vous entendez par des noms répéter. Ce batch très simple prend votre input.txt et génère un output.txt ... si les noms se répètent dans input.txt c'est dommage. Vous pouvez créer votre input.txt automatiquement avec une ligne comme ceci: dir/b G * .png> input.txt juste avant d'utiliser input.txt dans le for/f. –

0
cut -b 2-7,15-18 <infile.txt> outfile.txt 
+0

La partie 15-18 est seulement garantie d'obtenir l'extension si les noms de fichiers sont tous de 14 caractères. – Instantsoup

+0

Plus coupe n'est pas disponible sur Windows, sauf si vous l'installez avec cygwin ou quelque chose de similaire. –

Questions connexes