Automatische Ordner erstellen aus *.txt Datei -> Batchprogramm

JP1

Grünschnabel
#1
Hallo Leute,

ich habe nun seit einiger Zeit folgendes Problem:

Ich möchte mit einem Batchprogramm eine bestimmte Anzahl Ordner auf einem in der Batchdatei definierten Laufwerk erstellen lassen, jedoch die Namen der Ordner soll das Batchprogramm aus einer vorhandenen Text- oder Exceldatei lesen und anschließend erstellen.

Die Textdatei liegt z.B. in folgendem Format vor:

Mueller Marcus 2010_11_07
Tormeyer Lars 2010_11_06
Loren Denis 2010_11_04

(kann auch Tab oder Komma getrennt erstellt werden)

u.s.w.

Ich habe jetzt schon eine ganze Weile herumexperimentiert und Foren durchsucht komme aber zu keinem
brauchbaren Ergebnis.Ist einfach schon zu lange her, gute 30 Jahre :-(, das ich mich mit Automatisierung beschäftigt hatte.

Ich krieg´s einfach nicht mehr hin, vielleicht könnt ihr mir helfen.

Gruß Heiko JP1
 

JP1

Grünschnabel
#2
Ach so,

bisher mache ich es so, dass ich mir in Excel eine Spalte erzeuge (Verketten) die dann folgendes ausgibt:

mkdir Mueller_Marcus_20_11_07
mkdir Tormeyer Lars 2010_11_06
mkdir Loren Denis 2010_11_04

diese kopiere ich mir dann in meine Mini Batchdatei und es werden dann die Ordner erstellt.

echo off
cls
:start
ECHO.
mkdir Mueller_Marcus_20_11_07
mkdir Tormeyer Lars 2010_11_06
mkdir Loren Denis 2010_11_04
:end

Ist aber immer ganz schön umständlich und Leerzeichen und Umlaute kann ich auch nicht erzeugen.

Gruß Heiko JP1
 

deepthroat

Erfahrenes Mitglied
#3
Hi.

Siehe "help for".

Mit for /F kann man Dateien zeilenweise verarbeiten und an Trennzeichen aufspalten.

Um Umlaute zu erstellen, aus einer Datei die im ANSI Zeichensatz 1252 gespeichert ist, schalte den Zeichensatz der Konsole auf 1252 in der Batch Datei um:
Code:
chcp 1252
\edit: Man kann den aktuellen ANSI Zeichensatz auch aus der Registry auslesen, falls das Skript auf anderen Rechnern laufen soll, siehe http://www.tutorials.de/sonstige-sp...en-koenntet-ihr-mir-helfen-2.html#post1889539

Gruß
 
Zuletzt bearbeitet:

JP1

Grünschnabel
#4
Danke, einen kleinen Schritt bin ich nun weiter:

- Die Umlaute werden Dank "chsp 1252" nun mit erstellt
- ich habe folgendes in die Batch geschrieben:

echo off
cls
chcp 1252
:start
FOR /F %%G IN (list.txt) DO @mkdir %%G

- das Batchprogramm liest nun die "list.txt" ein und erstellt die Ordner - ABER ! leider liest das Programm die erste Zeile in meiner Textdatei und springt nach dem ersten gelesen Leerzeichen in die zweite Zeile.

Somit werden nur die Ordner "Hans" "Peter" und "Torsten" erstellt und nicht wie gewünscht

Hans Beispiel 20.11.1980
Peter Sample 11.01.1974
Torsten Hpunkt 04.04.1986

Gibt es dafür noch eine Lösung?

Viele Grüße
Heiko JP1
 

JP1

Grünschnabel
#6
Naja, es hätte ja sein können das man in einem Fachforum Antworten auf gestellte Fragen bekommt. Zimindest ist dies in den Foren meiner Berufsgruppe so!Es tut mir sehr leid, aber man kann sich nicht mit allen Dingen dieser Welt beschäftigen und ich bin nun mal kein Programierer.

Ich hätte hier nur etwas mehr Unterstützung erwartet.

Ich beschäftige mich damit numehr seit einer Woche und habe aber keine Zeit dafür mich stundenlang in Programiersprachen einzulesen. Suchmaschinen habe ich bereits sehr intensiv befragt und bin jedoch zu keiner Lösung gekommen, genaus wie "help for" auf der Komandozeilenebene bringt für mich nur bömiche Dörfer. Nach stundenlangen herumexperimentieren mit Optionen und Variabeln habe ich einfach die Nase voll.
 

deepthroat

Erfahrenes Mitglied
#7
Hi.
Naja, es hätte ja sein können das man in einem Fachforum Antworten auf gestellte Fragen bekommt. Zimindest ist dies in den Foren meiner Berufsgruppe so!Es tut mir sehr leid, aber man kann sich nicht mit allen Dingen dieser Welt beschäftigen und ich bin nun mal kein Programierer.
Du hast offenbar das Konzept von tutorials.de nicht verstanden. Erstens hilft hier jeder freiwillig und kostenlos. Zweitens wird davon ausgegangen, dass man etwas lernen möchte und dazu etwas Eigeninitiative mitbringt.
Ich hätte hier nur etwas mehr Unterstützung erwartet.
Sorry, aber was ist so schwierig die Hilfe zu lesen? Es handelt sich nicht mal um 100 Zeilen mit Beispielen. Wenn da irgendwas unklar ist, dann kann man ja fragen...

Außerdem finde ich meine Unterstützung ziemlich fair.
Ich beschäftige mich damit numehr seit einer Woche und habe aber keine Zeit dafür mich stundenlang in Programiersprachen einzulesen. Suchmaschinen habe ich bereits sehr intensiv befragt und bin jedoch zu keiner Lösung gekommen, genaus wie "help for" auf der Komandozeilenebene bringt für mich nur bömiche Dörfer. Nach stundenlangen herumexperimentieren mit Optionen und Variabeln habe ich einfach die Nase voll.
Wonach hast du denn gesucht? Der erste Treffer von :)google: "batch for komplette zeile lesen") ist sogar ein Thema hier auf tutorials.de.

Gruß
 
#8
Naja, es hätte ja sein können das man in einem Fachforum Antworten auf gestellte Fragen bekommt. Zimindest ist dies in den Foren meiner Berufsgruppe so!
Ist "Sonstige Sprachen" auf Batch spezialisiert?

Ich hätte hier nur etwas mehr Unterstützung erwartet.

Ich beschäftige mich damit numehr seit einer Woche und habe aber keine Zeit dafür mich stundenlang in Programiersprachen einzulesen.
...
Nach stundenlangen herumexperimentieren mit Optionen und Variabeln habe ich einfach die Nase voll.
Jede Hilfestellung in diesem (und den meisten anderen) Internetforum ist auf freiwilliger Basis.
Man kann nicht verlangen, dass einem Andere die gesamte Arbeit abnehmen.

Ohne Eigeninitiative geht nichts, und Programmieren lernt man eben nicht von heute auf morgen.

Suchmaschinen habe ich bereits sehr intensiv befragt und bin jedoch zu keiner Lösung gekommen, genaus wie "help for" auf der Komandozeilenebene bringt für mich nur bömiche Dörfer.
Was ist an "help for" unverständlich?
Es ist zwar nicht kurz, aber (meiner Meinung nach) gut verständlich und mit vielen Anwendungsbeispielen ausgeschmückt.

Es wird sogar mit Beispiel erklärt, was "case-sensitiv" bedeutet.
Ich weiß zwar nicht, welche Windowsversion du verwendest, aber der Hilfetext wird ziemlich gleich geblieben sein.



edit: zu spät :)
 

JP1

Grünschnabel
#9
Generell gesehen habt ihr ja recht, nur ich bin es aus der Fotografenbranche gewohnt, das man direkt und ohne Rätsel oder Schnitzeljagt geholfen bekommt. Das mag aber, genau wie bei euch, daran liegen, das die Kollegen wissen von was sie sprechen.
Das wiederum ist in meinem Fall nicht so!

Ich habe es mittlerweile nun doch noch selbst gelöst, wobei ich mir nicht sicher bin ob dies der richtige Weg ist und was da im Hintergrund noch so alles passiert.

echo off
cls
chcp 1252
:start
FOR /F "usebackq tokens=* delims=;" %%G IN (list.txt) DO @mkdir "%%G"
:end

Resultat:

Hans Beispiel 20.11.1980
Peter Sample 11.01.1974
Torsten Hpunkt 04.04.1986

Vielen Dank für die Anregungen und Hilfe

Viele Grüße
Heiko JP1
 

udg

Grünschnabel
#10
für die Suchmaschine:

um den Beitrag zu vervollständigen. Ich habe über die Feiertage 2016/ 2017 ein Tool programmiert, wo Batch unnötig ist.
Download hier:
http://www.inc-games-design.de/Tools/Files2Folder.rar

Infos gibst hier:

ScanDirectory To TextFile v2 | unknown design group 2016

Folder2Txt liest den Inhalt eines Ordners ein und dessen untergeordnete Dateien werden dann
in eine info.txt Datei gespeichert

Code: udg aka inc
UI: udg aka inc

=================================================================================================

Im oberen Auswahlfeld “ folgende Dateitypen auslassen:“

können mit klicken einer oder mehrere Checkboxen spezifische Endungen von der Suche ausgeklammert werden, die dann nicht in der info.txt Datei aufgelistet sind.

Im Eingabefeld Custom „Endung trennen mit ;“

können zusätzlich mehrere Dateiendungen eingegeben werden, die bei der Suche nicht berücksichtigt werden sollen um nicht in der Textdatei zu erscheinen.

Endungen sind zu trennen mit einem Semikolon ;

Beispiel:

xml;doc;cdr

Beispielinhalt eine gespeicherten TxT Datei:

C:\Users\User\Desktop\Ordner\Beispiel1.txt
C:\Users\User\Desktop\Ordner\Beispiel2.txt
C:\Users\User\Desktop\Ordner\Beispiel3.txt
C:\Users\User\Desktop\Ordner\Beispiel1.avi
C:\Users\User\Desktop\Ordner\Beispiel1.exe

================================================================================================

Im unteren Auswahlfeld “ nur diese Dateitypen einlesen:“

können mit klicken einer oder mehrere Checkboxen spezifische Endungen durch die Suche in eine Textdatei gespeichert werden, die dann in der info.txt Datei sind.

Dies macht es besonders einfach bestimmte Dateien zu suchen, um Informationen über dessen
Speicherort zu erhalten.

Im Eingabefeld Custom „Endung trennen mit ;“

können zusätzlich mehrere Dateiendungen eingegeben werden, die bei der Suche auch berücksichtigt werden sollen um in der Textdatei zu erscheinen.

Endungen sind zu trennen mit einem Semikolon ;

Beispiel:

wav;mp4;cdr

Beispiel Inhalt eine gespeicherten TxT Datei:

C:\Users\User\Desktop\Ordner\Beispiel1.wav
C:\Users\User\Desktop\Ordner\Beispiel2.wav
C:\Users\User\Desktop\Ordner\Beispiel3.wav
C:\Users\User\Desktop\Ordner\Beispiel1.mp4
C:\Users\User\Desktop\Ordner\Beispiel1.cdr