Forum: PC-Programmierung Windows Skript fuer Dateikopieren


von Owen S. (senmeis)


Lesenswert?

Servus,

mit dem folgenden Windows Skript möchte man alle *.src Files unter 
F:\tmp in original_src.txt auf dem selben Ordner kopieren.

@echo off
for /R "F:\tmp" %%f in (*.src) do (
  copy %%f "original_src.txt"
)

Das Problem ist nur die original_src.txt Datei erzeugt wird, wo sich der 
Skript befindet. Vermutlich liegt das an „copy %%f "original_src.txt"“. 
Tipps?

von Mario M. (thelonging)


Lesenswert?

Statt copy:
1
type %%f >> "F:\tmp\original_src.txt"

: Bearbeitet durch User
von Jens M. (schuchkleisser)


Lesenswert?

Was soll denn da passieren, wenn es zwei Dateien mit der Endung src 
gibt?
Das For legt nahe das es sich um "viele" Files handelt, aber das Copy 
kann definitiv nur eins erzeugen.

evtl. sollte man "copy %%f %%f.bak" benutzen. Hab ich aber nicht 
getestet ob das funktioniert.

von Harald K. (kirnbichler)


Lesenswert?

Jens M. schrieb:
> Was soll denn da passieren, wenn es zwei Dateien mit der Endung src
> gibt?

Ich habe mir das so zusammengereimt, daß der Threadstarter den Inhalt 
aller *.src-Dateien zusammen in einer neuen Datei haben möchte.

Also:

a.src:
  blablafusel

b.src:
  labermurmel

c.src:
  rhabarber

ergibt

original_src.txt:
  blablafusel
  labermurmel
  rhabarber

Wozu auch immer man sowas brauchen mag.

von Jens G. (jensig)


Lesenswert?

Owen S. schrieb:
> Das Problem ist nur die original_src.txt Datei erzeugt wird, wo sich der
> Skript befindet.

Nöö, nicht, wo das Script liegt, sondern was das aktuelle Verzeichnis 
ist, was wohl eben zufällig das Scriptverzeichnis ist.
Ja, dann musst Du eben angeben, was das Zielverzeichnis sein soll.
Ansonsten überschreibt Dein Script immer wieder dieselbe Zieldatei, wenn 
es mehere Files in f:\tmp gibt.
Vielleicht meintest Du ja eher:

   copy %%f %%f.txt
bzw.
   copy %%f f:\tmp\%%f.txt

Oder machst am Script-Anfang ein

   F:
   cd \tmp

: Bearbeitet durch User
Beitrag #8031077 wurde vom Autor gelöscht.
von Owen S. (senmeis)


Lesenswert?

Sorry ich habe vergessen zu erwähnen. Es gibt ausschliesslich nur ein 
src File in jedem Ordner. Ich will, falls möglich, das neu erzeugte 
original_src.txt sollte neben dem src File im selben Ordner stehen.

von Jens M. (schuchkleisser)


Lesenswert?

Dann benutze
1
@echo off
2
cls
3
4
for /r "f:\tmp" %%f in (*.src) do (
5
  copy "%%f" "%%~dpforiginal_src.txt"
6
)

von Owen S. (senmeis)


Lesenswert?

Danke, das klappt.

von Michael B. (laberkopp)


Lesenswert?

Owen S. schrieb:
> Tipps

Vor dem Aufruf des Skripts ins gewünschte Zielverzeichnis wechseln ?

Welchen Sinn hat es, alle *.src Dateien zu kopieren und nur die letzte 
als original_src.txt zu behalten ?

von Jens G. (jensig)


Lesenswert?

Michael B. schrieb:
> Welchen Sinn hat es, alle *.src Dateien zu kopieren und nur die letzte
> als original_src.txt zu behalten ?

Auch schon aufgewacht?

Owen S. schrieb:
> Sorry ich habe vergessen zu erwähnen. Es gibt ausschliesslich nur ein
> src File in jedem Ordner. Ich will, falls möglich, das neu erzeugte
> original_src.txt sollte neben dem src File im selben Ordner stehen.

von Mario M. (thelonging)


Lesenswert?

Hab auch erst im Nachgang verstanden, was Owen mit dem Script bewirken 
will.

von Michael B. (laberkopp)


Lesenswert?

Jens G. schrieb:
> Auch schon aufgewacht?

Frage gelesen und Antwort geschrieben.

Dass dem Trottel erst hinterher einfällt, was er fragen wollte, ja, sein 
Pech.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.