datei namen kopieren - nicht datei
datei namen kopieren - nicht datei
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
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
Da mir trotz deiner Beschreibung nicht ganz klar ist, was du nun eigentlich willst, hier mal zwei Beispiele:
oder
Code: Alles auswählen
del c:\hallo.yyy
ren c:\muh.xxx c:\hallo.yyy
Code: Alles auswählen
copy c:\muh.xxx c:\hallo.yyy /y
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"
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"
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?
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.
Was paßt dir denn z.B. an dem hier nicht?
Code: Alles auswählen
ren c:\hallo.yyy c:\muh.xxx
Naja, logisch, in Fall 1 löscht du zuerst die Datei, die du eigentlich umbennen willst, richtig wäreqm1 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"
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.
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 ??
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 ??
-
- DOS-Übermensch
- Beiträge: 1035
- Registriert: Mi 31. Jan 2007, 19:04
- Wohnort: Halle
- Kontaktdaten:
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.
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.