[suche] Batch, oder was auch immer, für Dateierstellung

The Snake

Neu angemeldet
Registriert
15 Juli 2013
Beiträge
152
Ich weiß garnicht so recht, wie ich es erklären soll.
Vorgestern hat sich mein WinRoot verabschiedet und es musste Windoof neu installiert werden. Darauf lief ein Tool welches einige Profile beinhaltete.
Lange Rede, kurzer Sinn ^^ Ich brauch ein Tool, php Script, oder was auch immer, welches mir, anhand einer txt, welche pro Zeile ein bestimmten Namen enthält, je eine Datei (txt oder xml) erstellt, mit irgendeinem Inhalt. z.B. den Buchstaben A.

Als Beispiel:
In der txt steht:
Anton
Berta
Cäsar

nun erstellt das Tool oder Script oder sonstwas
Anton.txt (Inhalt A)
Berta.txt (Inhalt A)
Cäsar.txt (Inhalt A)


Das ganze würde ich mich auch etwas kosten lassen. Also ran an die Tasten und mir eine PN schreiben.
 
[src=php]<?php

$ausgabe = "abc"; // text der in die dateien geschrieben wird.

$datei = fopen ( "./liste.txt", "r"); // datei in der die ganzen namen stehen

while ( ! feof ( $datei ) ) {

$inhalt = ltrim ( fgets ( $datei ) );
$inhalt = rtrim ( $inhalt );

if ( $inhalt ) {
$write = fopen ( './ordner/' . $inhalt . ".txt", 'w' );
// ./ordner/ kann beliebig angepasst werden und .txt kann auch in .xml geändert werden
fwrite ( $write, $ausgabe );
fclose( $write );
}
}

fclose ( $datei );

?>[/src]

Soetwas? Nicht schön aber funktioniert.
liste.txt sollte dann so aussehen
[src=php]eins
zwei
drei
vier
fuenf
etc[/src]
 
Da du ja explizit Windows geschrieben hast, bräuchtest du für meine Lösung erst die Unix-Tools oder Cygwin. Windows CMD ist ziemlich Scheiße zu programmieren. Aber auch dafür finden sich bestimmt Leute.

Mit Linux-/Unix-Shell (beachtet auch Leerzeichen in den Dateinamen):

Code:
Expand Collapse Copy
while read line; do echo "A" >> "$line"; done < Datei.txt

Wieviel willste zahlen?

Mit Pfadangaben wäre das Ganze allerdings noch etwas komplexer.
 
Windows CMD ist ziemlich Scheiße zu programmieren.
Mit vbs sollte das recht unkompliziert umsetzbar sein.

[EDIT:]
Könnte zum Beispiel so aussehen:
[src=vb]
'################Main################

Option Explicit

'*** Variablen & Konstanten definieren ***
Dim fso, objEingabe, objAusgabe
Dim AusgabePfad, AusgabeDatei, EingabePfad, EingabeDatei, Zeile, Position
const Inhalt = "testinhalt" 'zu speichernder Inhalt

EingabeDatei = inputbox("Pfad zur Listendatei: ") 'Pfad zur zu lesenden Datei
AusgabePfad = inputbox("Ausgabepfad: ") 'Ordner, in dem die neuen Dateien erstellt werden sollen

Const ForReading = 1
Const ForWriting = 2

Set fso = CreateObject("Scripting.FileSystemObject") ' Objekt für Dateisystem erstellen
Set objEingabe = fso.OpenTextFile(EingabeDatei, ForReading)

Do Until objEingabe.AtEndOfStream
Zeile = objEingabe.Readline
Set objAusgabe = fso.OpenTextFile(AusgabePfad & "\" & Zeile & ".txt", ForWriting, True)
objAusgabe.Writeline(Inhalt)
objAusgabe.close
Loop

objEingabe.Close

Set objEingabe = Nothing
Set objAusgabe = Nothing
Set fso = Nothing

MsgBox "Script beendet"[/src]

Hab ich mir zusammengebaut.
 
Zuletzt bearbeitet:
Ich finds immer wieder toll wie über Windows hergezogen wird... - ja die CMD ist eingeschränkt.. aber auch recht alt - dafür gibt es ja nun auch seit längerem die Powershell :rolleyes:

Trotzdem geht es mit einer einzigen Zeile in der CMD

[src=text]for /f %i in (c:\temp\x.txt) do ( echo A > %i.txt)[/src]

und in Powershell

[src=powershell]Get-Content c:\temp\x.txt | ForEach-Object { "A" >> $_".txt"}[/src]
 
Ich finds immer wieder toll wie über Windows hergezogen wird... - ja die CMD ist eingeschränkt.. aber auch recht alt - dafür gibt es ja nun auch seit längerem die Powershell :rolleyes:

Trotzdem geht es mit einer einzigen Zeile in der CMD
Natürlich geht es in einer Zeile sowohl in der Powershell als auch in der CMD.

Das Problem, was ich mit der CMD hab, ist einfach, dass die Syntax extrem anti-intuitiv (unintuitiv trifft nicht genau, was ich sagen will) ist. Probleme, die ich mit der Unix-Shell (Posix, Bash, ...) in einer halben Stunden gelöst hab, da sitz ich mit der CMD mehrere Tage dran.

Die Powershell wurde dann als der große Konkurrent zu den Unix-Shells angekündigt. Jetzt muss man dafür wieder 'ne komplett andere Syntax/Sprache lernen. Es gibt ein paar Tutorials im Netz. Bei mir auf Arbeit verwendet es ein Kollege. Eine größere Verbreitung konnte ich bisher noch nicht feststellen. Es ist ruhig geworden um die Powershell.

Ich benötige bei mir auf Arbeit ein Script, um ein paar Dateien aus verschiedenen Verzeichnissen rauszuziehen und in ein Zip-Archiv zu packen. Dazu kommen noch ein paar Kommandozeilenparameter. Würde sicherlich auch mit CMD oder Powershell gehen. Aber warum soll ich mich damit rumärgern, wenn ich die Aufgabe ziemlich problemlos mit Cygwin + Bash lösen kann.

Ach ja, die CMD ist halt einfach DOS, was wiederum ein Quick & Dirty raubkopiertes CP/M war. Dürfte also Ende der 70er Jahre entstanden sein. Unix war da schon einige Jahre älter. Entsprechend kann man das Alter der CMD nicht als Entschuldigung für die missratene Sprache nehmen. Microsoft hat(te) schon vor vielen Jahren eine Posix-API im System drin, die aber in den letzten Windows-Versionen nur noch den Enterprise-Varianten vorbehalten ist. D.h. hätte M$ gewollt, hätten die schon vor vielen Jahren problemlos die Posix-Shell in Windows zur Standardshell ernennen können.
 
Ist halt immer was man gewöhnt ist ^^
Obwohl ich auch alle paar Tage mal Linux nutze kommt ich mit Bash irgendwie nicht zurecht - da gehts mir mit der Geschwindigkeit ein kurzes Script zu schreiben halt genau anders rum... und wenn man eine große Anzahl an Windows-Rechnern verwaltet sind halt z.B. Powershell-Befehle überall out of the box möglich - ich werde nicht auf jedem Rechner cygwin installieren.

Ich spreche Bash auch nichts ab - ist ne geniale Sache... und ja der Syntax von Powershell ist extrem ungewohnt, was jedoch der "neuen" Struktur geschuldet ist das die Powershell halt voll Objektorientiert aufgebaut ist - das ist auch in der Bash nicht gegeben. Bin aber auch sehr lange mit dem Syntax nicht zurecht gekommen - was natürlich die Verbreitung sehr schwer macht....

Ich hab nur was gegen Aussagen das MS immer mist ist - jeder hat seinen eigenen Geschmack und seine eigene Gewohnheit
Wer heute z.B. von 0 anfängt und direkt Powershell lernt der hat dann mit was anderem wie Bash sicher auch seine Probleme und findet das blöd ;P
 
Zurück
Oben