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-ID: 127114

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

Ausgedruckt am: 16.11.2024 um 11:11 Uhr

60730
60730 14.10.2009 um 15:28:45 Uhr
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"  
StefanLausL
StefanLausL 14.10.2009 um 15:59:48 Uhr
Goto Top
Die Steuerdatei kann auch mit einer anderen Endung benannt sein.

Das Ganze soll einmalig laufen.
60730
60730 14.10.2009 um 16:03:36 Uhr
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ß
StefanLausL
StefanLausL 14.10.2009 um 16:11:03 Uhr
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.
60730
60730 14.10.2009 um 16:20:07 Uhr
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ß
bastla
bastla 14.10.2009 um 16:22:59 Uhr
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
ITIL-Harry
ITIL-Harry 14.10.2009 um 16:23:54 Uhr
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
bastla
bastla 14.10.2009 um 16:25:43 Uhr
Goto Top
... und dann auch gleich noch
del %%a
ren Tempdatei %%a
zu
move Tempdatei %%a
zusammenfassen.

Grüße
bastla
60730
60730 14.10.2009 um 17:19:32 Uhr
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
ITIL-Harry
ITIL-Harry 14.10.2009 um 17:36:29 Uhr
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
60730
60730 14.10.2009 um 17:42:29 Uhr
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ß
bastla
bastla 14.10.2009 um 20:31:16 Uhr
Goto Top
@timobeil
Danke für's Vertrauen ... face-smile

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

Grüße
bastla
StefanLausL
StefanLausL 15.10.2009 um 08:11:50 Uhr
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