stefanlausl
Goto Top

Inhalt von Textdatei an den Anfang von anderer Datei kopieren

Hallo,

ich habe folgendes Problem.

Ich möchte den Inhalt von "c:\temp\Steuerdatei.txt" an den Anfang aller *.txt Dateien kopieren.
Diese können sich in c:\temp und in allen Unterordnern befinden.

Hat vielleicht jemand ein passendes Skript für mich ?

Content-Key: 127114

Url: https://administrator.de/contentid/127114

Printed on: April 23, 2024 at 21:04 o'clock

Mitglied: 60730
60730 Oct 14, 2009 at 13:28:45 (UTC)
Goto Top
Servus,

das wird aber ein heisses Eisen...

denn
"c:\temp\Steuerdatei.txt"
ist ja auch eine *.txt Datei, die sich in c:\temp befindet...

btw: Steuerdatei mit welchem Inhalt?
Und wie oft soll das laufen?

  • einmalig?
  • täglich?

ren c:\temp\Steuerdatei.txt c:\temp\Steuerdatei.org
for /f %%a in ('dir /s /b c:\temp\*.txt') do copy c:\temp\Steuerdatei.org + "%a" "c:%~pa%~na.neu"  
for /f %%a in ('dir /s /b c:\temp\*.org') do ren %%a "c:%~pa%~na.txt"  
Member: StefanLausL
StefanLausL Oct 14, 2009 at 13:59:48 (UTC)
Goto Top
Die Steuerdatei kann auch mit einer anderen Endung benannt sein.

Das Ganze soll einmalig laufen.
Mitglied: 60730
60730 Oct 14, 2009 at 14:03:36 (UTC)
Goto Top
Zitat von @StefanLausL:
Die Steuerdatei kann auch mit einer anderen Endung benannt sein.

das hab ich auch einfach mal gemacht

Das Ganze soll einmalig laufen.

...und läufts schon?

btw: "so" muß - sollte eine leere Zeile am Ende von c:\temp\Steuerdatei.txt sein, sonst schreibt er in die gleiche (letzte) Zeile der Steuerdatei die erste Zeile der xyz.txt.

Gruß
Member: StefanLausL
StefanLausL Oct 14, 2009 at 14:11:03 (UTC)
Goto Top
Nee Sorry geht nicht.
Wahrscheinlich stell ich mich wieder zu blöd an.

Ich hab das mal wie folgt angepasst (die Steuerdatei hab ich schon umbenannt):

for /f %%a in ('dir /s /b c:\temp\TestOrdner\*.txt') do copy c:\temp\TestOrdner\Steuerdatei.org + "%a" "c:%~pa%~na.neu"
for /f %%a in ('dir /s /b c:\temp\TestOrdner\*.org') do ren %a "c:%~pa%~na.txt"


Übrigens so war mein erster Versuch der nicht funktioniert hat:

@echo off&setlocal
set Steuerdatei=C:\temp\Steuerdatei
set dir=C:\temp\TestOrdner
set file=*.sql
for /r "%dir%" %%i in ("%file%") do Call :Sub "%%~fi" "%%~ni"
Pause
goto :EOF
:Sub
echo "fdfsfs" >> %1

Anstatt "fdfsfs" soll der Inhalt der Steuerdatei geschrieben werden,
und zwar nicht am Ende sondern am Anfang aller Dateien.
Mitglied: 60730
60730 Oct 14, 2009 at 14:20:07 (UTC)
Goto Top
Servus,

was genau "geht" nicht?

  • werden keine .new angelegt?
  • steht da nicht das drin, was drin stehen sollte?

Bis auf eine fehlende zeile - die die .txt vorm umbenennen löscht - sehe ich keinen "Bock" drin.

Ps: ich hab das bei mir (XP) extra für dich gezimmert - anpassungsarbeiten deinerseits wären eigentlich nicht nötig gewesen - denn bei mir klappert das...

Gruß
Member: bastla
bastla Oct 14, 2009 at 14:22:59 (UTC)
Goto Top
@timobeil
Bis auf eine fehlende zeile - die die .txt vorm umbenennen löscht - sehe ich keinen "Bock" drin.
Für einen Batch gibt's aber vergleichsweise wenige Prozentzeichen ... face-wink
BTW: Anstelle von "c:%~pa" wäre "%~dpa" (oder "%%~dpa") vielleicht etwas stimmiger ...

Grüße
bastla
Member: ITIL-Harry
ITIL-Harry Oct 14, 2009 at 14:23:54 (UTC)
Goto Top
Wenn es sich um Textdateien handelt kannst doch den Type-Befehl innerhalb der Schleife verwenden und den in neue Dateien umleiten

Das Schleifenkonstrukt hats ja - nun innerhalb der Schleife:

type Steuerdatei.txt > Tempdatei
type %%a >> Tempdatei
del %%a
ren Tempdatei %%a

Gruß
ITIL-Harry
Member: bastla
bastla Oct 14, 2009 at 14:25:43 (UTC)
Goto Top
... und dann auch gleich noch
del %%a
ren Tempdatei %%a
zu
move Tempdatei %%a
zusammenfassen.

Grüße
bastla
Mitglied: 60730
60730 Oct 14, 2009 at 15:19:32 (UTC)
Goto Top
Zitat von @bastla:
@timobeil
Für einen Batch gibt's aber vergleichsweise wenige Prozentzeichen ... face-wink

Prozentual gesehen face-wink
Ich nehme alles zurück und behaupte - hätt ichs in ner Batch getestet und nicht direkt in das schwarze Fenster geschrieben..
Grüße
bastla

zurück
Member: ITIL-Harry
ITIL-Harry Oct 14, 2009 at 15:36:29 (UTC)
Goto Top
Die Idee hatte ich auch - aber wenn es die Datei gibt musst das ersetzen bestätigen oder entsprechend parametrisieren
mit MOVE /Y z. B.

Gruß
ITIL-Harry
Mitglied: 60730
60730 Oct 14, 2009 at 15:42:29 (UTC)
Goto Top
Zitat von @ITIL-Harry:
Die Idee hatte ich auch - aber wenn es die Datei gibt musst das ersetzen bestätigen oder entsprechend parametrisieren
mit MOVE /Y z. B.

Nöö - auch das ist ein "irrtum" - der einem nur dann passiert, wenn man direkt in der Dosbox werkelt und nicht in einer Batch face-wink
Und Bastla traue ich alles zu, aber nicht, dass er - Befehle die in Batchen gebraucht werden - in der Dosbox "testet" face-wink

"Das machen nur TiMos"

Gruß
Member: bastla
bastla Oct 14, 2009 at 18:31:16 (UTC)
Goto Top
@timobeil
Danke für's Vertrauen ... face-smile

@ITIL-Harry
move /? - letzter Satz (gilt übrigens auch für copy)

Grüße
bastla
Member: StefanLausL
StefanLausL Oct 15, 2009 at 06:11:50 (UTC)
Goto Top
Vielen Dank für Eure Hilfe.

Es funktioniert alles wunderbar.

Hier noch mal das komplette Skript:

@echo off&setlocal
set Steuerdatei=C:\temp\TestOrdner\Steuerdatei.org
set dir=C:\temp\TestOrdner
set temp=c:\temp\temp
set file=*.sql
for /r "%dir%" %%i in ("%file%") do Call :Sub "%%~fi"
Pause
goto :EOF
:Sub
type %Steuerdatei% > %temp%
echo. >> %temp%
type %1 >> %temp%
del %1
move %temp% %1