2009-06-30 4 views
0

Ich habe eine Textdatei, die eine Liste von Dateinamen enthält, abzüglich der Erweiterung, die ich erstellen muss. Ich möchte einen schnellen Stapeldateibefehl oder ein VBS-Skript ausführen, das durch die Liste iteriert und dann eine Datei basierend auf dem Namen erstellt.Eine Textdatei Zeile für Zeile in einem Stapel- oder VBS-Skript lesen?

Die Textdatei sieht wie folgt aus etwas:

PRXI0000466 
PRXI0000564 
PRXI0000636 
PRXI0000681 
PRXI0001092 

Deshalb möchte ich durch jede Zeile in einer Schleife, dann tun, um eine „echo . > %file%.txt“ (unter der Annahme %file% die Zeile aus der Textdatei enthält).

Kann mir jemand einen schnellen Weg zeigen, dies zu tun?

Antwort

5

Nun, das ist ein Einzeiler in cmd:

for /f %i in (textfile.txt) do @echo . > %i.txt 

for /f Schleifen zeilenweise urch eine Textdatei, und dabei auf die Zeichenüber übrigens auch. Zum Glück für dich gibt es keine Leerzeichen in deinen Zeilen, sonst hätte das dort auch so etwas wie "delims=" verlangt.

Dies würde eine einzelne Zeile mit einem Punkt gefolgt von einem Leerzeichen in jeder neuen Datei setzen. Wenn Sie nur eine Leerzeile wünschen, müssen Sie echo.>%i.txt verwenden. Wenn Sie nur jede Datei erstellen möchten (UNIX-Geeks könnten einfach touch (1) verwenden), können Sie copy NUL %i.txt verwenden. Wenn Sie dies in einer Batch-Datei (und nicht direkt von der Befehlszeile) verwenden möchten, müssen Sie %%i anstelle von %i verwenden.

Ich glaube, Sie wirklich leere Dateien erstellen wollen, so dass die folgenden sollte es tun:

for /f %i in (textfile.txt) do @copy nul %i.txt 
5

Versuchen Sie nur leere Textdateien zu erstellen? Wenn ja dieses .vbs tun Skript es

Set fso = CreateObject("Scripting.FileSystemObject") 
Set listFile = fso.OpenTextFile("list.txt") 
do while not listFile.AtEndOfStream 
    fName = listFile.ReadLine() 
    fso.CreateTextFile(fName + ".txt") 
loop 
0

Die Textdatei t.txt enthält:

PRXI0000466 
PRXI0000564 
PRXI0000636 
PRXI0000681 
PRXI0001092 

Diese Schleife Ihr Problem lösen sollte .

for /f %%a in (t.txt) do %%a > %%a.txt