# Dateien Fusionieren



## zyclop (1. April 2008)

Hallo,

ich habe eine zeile in einem Batch geschrieben welche mir Dateien fusioniert. Das heisst, er kopiert mir alle Inahalte in eine neue Datei.


```
copy "test_1.txt" + "test_2.txt" + "test_3.txt" + "test_4.txt" ergebnis.txt
```

Jetzt ändern die Namen dieser Dateien. Die einte heisst 1234584_213654_Zyclop die andere 15814_156_Zyclop. Das heisst ich habe nicht immer diese Fixen Dateien vorallem sind es knapp über 100. Ich möchte nun alle Dateien in einem Ordner mit einander Fusionieren lassen. Also so eine art schlaufe machen für jede Datei die existiert. Hat da jemand einen Plan wie ich das machen kann? 

grz zyclop


----------



## olqs (1. April 2008)

Ich würds ohne Schleife lösen:

```
copy *Zyclop.txt ergebnis.txt
```
Ansonsten als Schleife:

```
for %i in (*Zyclop.txt) do type %i >> ergebnis.txt
```


----------



## zyclop (1. April 2008)

Das problem ist das nicht jede Datei ein Zyclop beinhaltet. Es ist so das sich jede Datei unterscheidet. Ist das dann immernoch möglich? im moment (korrigier mich wenn ich falsch liegE) kopiert er den inhalt jeder Datei welche *zyclop.txt heisst in ein Ergebnis.txt. Aber manche heissen nicht zyclop.


----------



## olqs (1. April 2008)

Was spricht dann gegen *.*?

Mit irgendeinem Muster müssen ja die Dateien selektierbar sein.


----------



## zyclop (1. April 2008)

ja klar...sorry heute ist nicht mein tag...selektierbar sind sie schon...und zwar nach datum aber das Datum wird in text gepspeichert also gibt z.B. 01.04.08 dann 39539...wenn eine selektion möglich währe dann währe die einzige die sinn machen würde das mann sagt...diese woche z.B. 13 und er dann aus der Zahl das Datum ausrechnet und dann die Woche und das Überprüft...oder ich nehme als Dateinamen die Woche.


----------



## zyclop (1. April 2008)

habs jetzt mal mit folgendem Code versucht, aber das läuft nicht, es startet zwar aber er kommt nicht mal zur pause


```
for %i in (*.txt) do type %i >> ergebnis.txt
```


----------



## zyclop (1. April 2008)

Habs jetzt so gemacht:


```
copy *.txt ergebnis.txt
```

Das ist auch gut so. Funktioniert soweit bis auf eine Kleinigkeit. Er fügt mir am schluss der Zeile folgendes Zeichen.


```
Das Zeichen wird nicht angezeigt. Es ist so ein Viereck. Ein nicht ausgefülltes
```

Das sollte nicht sein. Desweitern währe es cool wenn der Benutzter aufgefordert werden könnte die Wochennummer einzugeben. Damit sich dann die Abfrage anpasst auf:



```
Bitte geben sie die Wochennummer ein
Wochennummer = Eingabe
copy *[Wochennummer].txt ergebnis.txt
```

ist das machbar mit Batch Dateien?


----------



## olqs (1. April 2008)

Sicher ist das machbar:


```
SET /P WOCHE="Welche Woche soll zusammengefasst werden? "
copy *%WOCHE%.txt ergebnis.txt
```

Noch ne Anmerkung:
Falls du die For Schleife in eine Batch Datei ausprobiert hast, dann ist es klar das es nicht funktioniert. In Batch Dateien werden die Laufvariablen einer Schleife mit %% eingeleitet, also %%i statt %i


----------



## zyclop (1. April 2008)

```
@echo off
@echo Welche Woche soll zusammengefasst werden? 
SET /P WOCHE=""
copy /y *%WOCHE%.txt ergebnis.txt
```

Habs jetzt so gemacht...aber im moment ist es so wenn ich woche 13 eingebe kommen natürlich auch alle mit 1 drin und wenn ich 2 oder 3 eingebe, erstellt er eine Datei mit dem Inhalt von Datei "Kopie von Kopie von Inhalt_1.txt"

weisst du ob ich da etwas falsch mache

Danke schonmal bis hierhin, wirklich eine super hilfe...ich schäme mich fast, ich kann in VB ein programm und Makros schreiben, kriege aber nicht mal einen batch zusammen .


----------



## olqs (2. April 2008)

Also bei funktioniert das wie gewünscht:

```
C:\test>set /P WOCHE=""
13

C:\test>copy /y *%WOCHE%.txt ergebnis.txt
Datei2_13.txt
Datei3_13.txt
Datei_13.txt
        1 Datei(en) kopiert.

C:\test>type ergebnis.txt
13 2
13 3
13
```

Ich kann mir höchstens vorstellen, bei dir mit anderen Dateinamen das matching nicht passt, aber da kann ich dir dann allgemein nicht weiterhelfen.


----------



## zyclop (8. April 2008)

Hi, ich bins wieder. Ich habe es nun so gemacht



```
@echo off
@echo Welche Woche soll zusammengefasst werden? 
SET /P WOCHE=""
copy /y %WOCHE%*.txt ergebnis.txt
```

Jetzt funktioniert das auch super, das Problem ist nur folgendes. Wenn ich die Dateien Fusioniere, dann habe ich am schluss der Datei ein Viereck, einfach ein Zeichen zu viel. Wie kann ich in einer Textdatei das letzte Zeichen löschen? 

grz zyclop


----------



## olqs (8. April 2008)

Wenn du mal probierst die mit type zusammenzuhängen?
Also statt der Zeile mit Copy folgendes:

```
for %%i in (%WOCHE%*.txt) do type %%i >> ergebnis.txt
```


----------



## zyclop (9. April 2008)

hier bekomme ich einfach eine Leere Datei...hmm

so habe ich das gemacht


```
@echo off
@echo Welche Woche soll zusammengefasst werden? 
SET /P WOCHE=""
for %%i in (%WOCHE%*.txt) do type %%i >> ergebnis.txt
```


----------



## olqs (9. April 2008)

Ich hab deinen Code mal 1:1 in einer Batch Datei kopiert und gestartet.

Bei mir werden in ergebnis.txt alle Dateien zusammengefasst. Kanns leider nicht reproduzieren.


----------



## zyclop (9. April 2008)

wie heissen deine dateien Meine heisst zum beispiel. 8_Zyclop stunden.txt


----------



## zyclop (9. April 2008)

habs es ist der Name der Datei. Sie darf keinen Leerschlag haben...thx olgs...melde mich beim nächsten Problem wieder


----------

