datei namen kopieren - nicht datei

Du hast eine Frage aber bist neu im Thema?
Antworten
qm1

datei namen kopieren - nicht datei

Beitrag von qm1 »

hi all

folgender fall

auf c: liegen 2 files
muh.xxx und hallo.yyy

per bat datei soll nun der name muh.xxx auf hallo.yyy übertragen werden

quasi

copy filename muh.xxx //hier häng ich fest
del c:/muh.xxx
rename c:/hallo.yyy muh1234.xxx

wenn möglich ohne datei endung dann spar ich mir
copy c:/muh.xxx c:/muh.yyy
del c:/muh.xxx


ich möchte NICHT die datei kopieren - sonder den namen und nur den, auf X übertragen

geben das dosbefehle her ??


QM1 - bekennender DOS noob wenns um sowas spezielles geht
bttr

Beitrag von bttr »

Da mir trotz deiner Beschreibung nicht ganz klar ist, was du nun eigentlich willst, hier mal zwei Beispiele:

Code: Alles auswählen

del c:\hallo.yyy
ren c:\muh.xxx c:\hallo.yyy
oder

Code: Alles auswählen

copy c:\muh.xxx c:\hallo.yyy /y
qm1

Beitrag von qm1 »

nein das will ich nicht

eine datei mit variablem namen
= muh.xxx hat inhalt "blau"
der dateiname soll auf datei hallo.yyy mit inhalt "grün" übertragen

ergebniss

muh.xxx mit inhalt "grün"


bei
del c:\hallo.yyy
ren c:\muh.xxx c:\hallo.yyy

oder

copy c:\muh.xxx c:\hallo.yyy /y

überschreibe oder lösche ich "grün"
bttr

Beitrag von bttr »

Sag' mal, wie lange hast du schon mit Computern zu tun? Deine Beschreibung ist wirklich "grottig" ohne dir damit zu nahe treten zu wollen.

Was paßt dir denn z.B. an dem hier nicht?

Code: Alles auswählen

ren c:\hallo.yyy c:\muh.xxx
Vielleicht kannst du ja mal erläutern, was überhaupt der Hintergrund der ganzen Geschichte ist und dann zäumen wir das Pferdchen mal von den richtigen Seite auf. 8-)
Benutzeravatar
Jinsu
MemMaker-Benutzer
Beiträge: 79
Registriert: Di 8. Mär 2005, 11:14
Wohnort: NRW
Kontaktdaten:

Beitrag von Jinsu »

qm1 hat geschrieben: bei
del c:\hallo.yyy
ren c:\muh.xxx c:\hallo.yyy

oder

copy c:\muh.xxx c:\hallo.yyy /y

überschreibe oder lösche ich "grün"
Naja, logisch, in Fall 1 löscht du zuerst die Datei, die du eigentlich umbennen willst, richtig wäre

del c:\muh.xxx
ren c:\hallo.yyy c:\muh.xxx

um das nur mal zu korrigieren.

Fall 2 genauso, da sollte es heissen:

copy c:\hallo.yyy c:\muh.xxx /y

denn du willst ja hallo.yyy umbennenen.

Was hast du eigentlich genau vor? Willst du einfach nur zwei Dateinamen tauschen? Dann bastel die eine .bat die Fall 1 oder Fall 2 ausführt und mit zwei Parametern die Dateinamen übergeben bekommt:

rem umbenennen.bat
copy %1 %2 /y

Das ganze rufst du dann z.B. so auf:

c:\>umbenennen hallo.yyy muh.xxx

Wenn die Datei auch noch im Pfad liegt, kann man sie überall verwenden.

Willst du jedoch eine ganze Reihe von Dateien auf einen Rutsch umbenennen, dann ist schon mehr Arbeit erfolderlich und man müsste tiefer in die Trickkiste greifen.
qm1

Beitrag von qm1 »

den hintergund zu erläutern füllt ganze bücher

ein programm wirft mir sporadisch 2 datei auf C:
muh0000.xxx
hallo.yyy
der inhalt beider dateien ist bei jeden auswerfen anders

das programm selber kann nur "muh" beim nächsten auswerfen automatisch um 1 hochzählen
muh0001.xxx
es überschreibt immer hallo.yyy weil das prog. diese datei nicht hochzählen kann
nach 2 stunden laufzeit habe ich muh0000 bis muh0099 und nur ein hallo.xxx

beim letzten auswerfen habe ich 99 muh dateien und nur 1 hallo
in dieser hallo.xxx ist nur die information des letzen auswerfens enthalten
ich brauche aber alle 99 hallo informationen - muh brauch ich nicht

also will ich eine BAT datei (innerhalb des programms kann man nach dem auswerfen eine BAT laufen lassen) die das besagte ausführt

sonst müsste ich ständig warten bis die dateien kommen und per hand das rename machen was bei 100 rechnern unmöglich ist

also soll das programm die 2 dateien auf c: schreiben
dann die BAT starten
die BAT soll den dateinamen von muh0000.xxx erfragen
alles was muh heist löschen und das was hallo.yyy ist in muh0000.yyy umbenennen
läuft der 2te durchgang kommt auf C:muh0001.xxx
und hallo.yyy
!!! dieses hallo.yyy überschreibt nicht hallo0000.yyy
BAT rennt los und auf c: bleiben übrig

kein muh*.xxx denn die sind gelöscht
hallo0000.yyy
hallo0001.yyy

und das spiel beginnt von vorne

das ist meine absicht

so und jetzt kommst du

// beim schreiben wurde geposten

ich weis leider nicht welche zahl für * in muh*.xxx steht
das muss die BAT datei abfragen und übergeben
bzw. fragt die BAT was ist * in *.xxx
aha * = irgendwas
del *.xxx
rename hallo.yyy in irgendwas.yyy

ist sowas per DOS befehl machbar ??
elianda
DOS-Übermensch
Beiträge: 1150
Registriert: Mi 31. Jan 2007, 19:04
Wohnort: Halle
Kontaktdaten:

Beitrag von elianda »

Also wenn du aus deinem Programm herauskommst und du hast
m001.xxx
m002.xxx
m003.xxx
m004.xxx
h.yyy

dann soll h.yyy zu h004.yyy werden?

Warum nimmst du nicht einfach die Zahl der letzten m???.xxx Datei und benennst h.yyy zu h???.yyy um?
Ansonsten kannst du natuerlich auch einfach nur die Zahl hinter h???.yyy hochaehlen, was etwas schwerer ist.

Mal als Tipp:
Schaue dir mal dir /b und das pipen in eine Datei an.
Schaue dir die Syntax fuer Sort und Edlin an und das pipen in die Applikation automatisch zu editierenden Dateien.
Schaue dir an, wie man mit if exist goto arbeitet und errorlevel auswertet.
Und for Schleifen mit for (%%1) usw.

Als Anfang probier doch einmal folgendes:
mache dir muh*.xxx > temp.txt

Wenn deine DOS Version kein Dir hat, was ueber Parameter alphabetisch sortieren kann, sortiere temp.txt mit sort umgekehrt alphabetisch.

Cutte mit Edlin die erste Zeile heraus.

Mache echo copy > temp1.txt
Mache echo h.yyy > temp2.txt
copy temp1.txt + temp.txt + temp2.txt rena.bat
call rena.bat

fertig.
Antworten