Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Beim Abgleich existierende Datei nicht ersetzen sondern neuere in anderes Verzeichnis kopieren

Frage Entwicklung Batch & Shell

Mitglied: Machete

Machete (Level 1) - Jetzt verbinden

02.12.2010, aktualisiert 22:22 Uhr, 4582 Aufrufe, 15 Kommentare

Hallo miteinander,

leider habe ich in der Suche nicht das Passende gefunden.

Ich benötige eine Batch welche beim Abgleich erst prüft ob die Datei im Zielverzeichnis bereits vorhanden ist.
Wenn nicht wird ganz normal kopiert.
Wenn ja, soll die neuere Datei in einen anderen (temporären) Ordner abgelegt werden wo ich diese dann per Batch umbenennen lasse.

Das mit dem Umbenennen klappt schon mal ganz gut, nur der Schritt davor nicht.

Vielen Dank schon mal für die Lösungsansätze.

Grüße Machete
Mitglied: HelgeSchneider
02.12.2010 um 22:35 Uhr
Hallo Machete,

du benötigst den Befehl

"if exist" bzw. "if not exist"

hierüber lässt sich dies abfragen ob eine Datei oder ein Verzeichnis existiert. Danach kannst du über die if-Abfrage deine Logik erstellen.

Bspw.

"If Exist PFAD\DATEI (md TEMPORDNER& etc...)"

Gruß Helge
Bitte warten ..
Mitglied: Machete
02.12.2010 um 22:42 Uhr
Hallo Helge, vielen Dank für die schnelle Antwort.

So weit war ich eigentlich auch schon, das Problem ist dass ich nicht sagen kann wie die Datei heisst.

Es sind Dateien welche der User selbst nach seinen Vorstellungen benennt.

Vielleicht noch eine andere Idee?

Vielen Dank
Bitte warten ..
Mitglied: HelgeSchneider
02.12.2010 um 22:51 Uhr
Hey,

dann musst du genauer werden in deiner Beschreibung:

Wie erstellt der User die Dateien? Wo erstellt der diese? Warum soll diese Prüfung stattfinden? Was soll dann passieren?

ansonsten kann ich nur allgemeine Antworten geben die dir nicht weiterhelfen ...

Gruß Helge
Bitte warten ..
Mitglied: 60730
02.12.2010 um 23:04 Uhr
moin,

wie nix gefunden?
Demo für den cmd Prompt:
edit: dann halt so herum mit fcp
edit² noch ein x gekauft und getestet:
edit³ für leerzeichen noch drei paar Gänsefedern und Füße dazu (die zugekaufte Buchstabensuppe wird langsam teuer)

for /r laufwerk:\pfad\quelle\ %a in (*.fcp) do if not exist "ziel1:\%~nxa" (copy "%a" ziel2\) else copy "%a" ziel1\
und wie immer Benutzung nur auf eigene Gefahr und in Testordnern testen.

Gruß
Bitte warten ..
Mitglied: Machete
02.12.2010 um 23:17 Uhr
Der User speichert Dateien mit der Endung .fcp
In diesen Dateien sind z.B. Kundeninformationen gespeichert.
Nun gibt es auf einem Server ein Verzeichnis wo diese Dateien gespeichert werden.

Nun hat der User auch die Möglichkeit einen Laptop mit außer Haus zu nehmen auf dem sich ein Verzeichnis befindet in welches er auch speichern kann.

Wenn der User nun z.B. eine Müller.fcp speichert und auf dem Server ist schon eine vorhanden, soll er die ältere nicht überschreiben sondern die neue umbenennen in Müller_1.fcp.

Dass mit dem umbenennen habe ich bereits hinbekommen.

Ich müsste lediglich die Dateien welche neuer sind in ein anderes Verzeichnis schaufeln damit ich alle neueren Dateien auf einmal umbenennen kann ohne die alten mit umzubenennen.

Also neuere Dateien (die mit dem älteren Erstellungs/Änderungsdatum liegen auf dem Server) in ein anderes nicht in das eigentliche Zielverzeichnis.

Vielen Dank
Bitte warten ..
Mitglied: Machete
03.12.2010 um 08:56 Uhr
Guten Morgen,

bekomme hier immer die Meldung dass er die angegebene Datei nicht finden kann.

Gruß
Bitte warten ..
Mitglied: 60730
03.12.2010 um 09:56 Uhr
moin,

wenn ich folgendes mache:

  • Ordner c:\test\1 erstellen
  • Ordner c:\test\2 erstellen
  • Ordner c:\test\3 erstellen
  • In Ordner c:\test\1 eine 123.fcp mit nem dummyinhalte erstelle
  • diesen Schnippsel das erste mal in einer Dosbox laufen lasse:
for /r C:\test\1\ %a in (*.fcp) do if not exist C:\test\2\%~na (copy %a C:\test\2\) else copy %a C:\test\3\
  • Ist diese Datei von 1 zu 2 kopiert worden.
for /r C:\test\1\ %a in (*.fcp) do if not exist C:\test\2\%~na (copy %a C:\test\2\) else copy %a C:\test\3\ 
 
if not exist C:\test\2\123 (copy C:\test\1\123.fcp C:\test\2\ )  else copy C:\test\1\123.fcp C:\test\3\ 
        1 Datei(en) kopiert.
Lasse ich das zum zweitel mal laufen - merke ich - upps da ist ein "fehlerchen" drin...
N:\>for /r C:\test\1\ %a in (*.fcp) do if not exist C:\test\2\%~na (copy %a C:\t 
est\2\) else copy %a C:\test\3\ 
 
N:\>if not exist C:\test\2\123 (copy C:\test\1\123.fcp C:\test\2\ )  else copy C 
:\test\1\123.fcp C:\test\3\ 
C:\test\2\123.fcp überschreiben? (Ja/Nein/Alle): 
        0 Datei(en) kopiert.
Ergo:
Muß die Zeile (die Variable) einen Buchstaben mehr bekommen.
for /r C:\test\1\ %a in (*.fcp) do if not exist C:\test\2\%~nxa (copy %a C:\test\2\) else copy %a C:\test\3\
  • und siehe da:
for /r C:\test\1\ %a in (*.fcp) do if not exist C:\test\2\%~nxa (copy %a C:\test\2\) else copy %a C:\test\3\ 
 
if not exist C:\test\2\123.fcp (copy C:\test\1\123.fcp C:\test\2\ )  else copy C:\test\1\123.fcp C:\test\3\ 
        1 Datei(en) kopiert. 
 
dir /s c:\test\*.fcp 
 
Verzeichnis von c:\test\1 
 
03.12.2010  09:42                 3 123.fcp 
               1 Datei(en)              3 Bytes 
 
Verzeichnis von c:\test\2 
 
03.12.2010  09:42                 3 123.fcp 
               1 Datei(en)              3 Bytes 
 
Verzeichnis von c:\test\3 
 
03.12.2010  09:42                 3 123.fcp 
               1 Datei(en)              3 Bytes 
 
     Anzahl der angezeigten Dateien: 
               3 Datei(en)              9 Bytes
Ergo: diese Demo funktioniert und zeigt logischwerweise auch alles an:

Diese Zeile bekomme hier immer die Meldung dass er die angegebene Datei nicht finden kann. jedoch nicht und selbst wenn - würde da auch noch mehr stehen.

Von daher.....etwas mehr Info/Probieren deinerseits wäre vielleicht auch ne Möglichkeit gewesen zum Ziel zu kommen....
Wie gesagt - er zeigt ja an, was er macht.

Gruß
Bitte warten ..
Mitglied: bastla
03.12.2010 um 11:15 Uhr
@T-Mo
Nur als Anmerkung (da ich ohne ausreichenden Input auch nur im Schneegestöber tappe ): Könnte auch sein, dass eine Datei nicht gefunden wird, weil sie ein oder mehrere Leerzeichen im Namen / Pfad hat ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
03.12.2010 um 11:54 Uhr
@bastla:

tja das kommt davon, wenn man abends Demos fürn den cmd Prompt baut

N:\>cd /d c: 
 
C:\>md test 
 
C:\>md test\1 
 
C:\>md test\2 
 
C:\>md test\3 
 
C:\>echo 123.fcp>c:\test\1\123.fcp 
 
C:\>echo "123 456.fcp">"c:\test\1\123 456.fcp" 
 
C:\>echo "123 456.fcp">"c:\test\1\123 456 789.fcp" 
 
C:\>for /r C:\test\1\ %a in (*.fcp) do if not exist C:\test\2\%~nxa (copy %a C:\ 
test\2\) else copy %a C:\test\3\
C:\>if not exist C:\test\2\123 456 789.fcp (copy C:\test\1\123 456 789.fcp C:\te 
st\2\ )  else copy C:\test\1\123 456 789.fcp C:\test\3\ 
Das System kann die angegebene Datei nicht finden. 
 
C:\>if not exist C:\test\2\123 456.fcp (copy C:\test\1\123 456.fcp C:\test\2\ ) 
 else copy C:\test\1\123 456.fcp C:\test\3\ 
Das System kann die angegebene Datei nicht finden. 
 
C:\>if not exist C:\test\2\123.fcp (copy C:\test\1\123.fcp C:\test\2\ )  else co 
py C:\test\1\123.fcp C:\test\3\ 
        1 Datei(en) kopiert.
Und sieghe da ->
Das System kann die angegebene Datei nicht finden.

wie gut, dass ich nur ein paar Pfade aber niemals Dateien mit leerzeichen habe - soll mir ne Lehre sein

C:\>for /r C:\test\1\ %a in (*.fcp) do if not exist "C:\test\2\%~nxa" (copy "%a" 
 C:\test\2\) else copy "%a" C:\test\3\
C:\>if not exist "C:\test\2\123 456 789.fcp" (copy "C:\test\1\123 456 789.fcp" C 
:\test\2\ )  else copy "C:\test\1\123 456 789.fcp" C:\test\3\ 
        1 Datei(en) kopiert. 
 
C:\>if not exist "C:\test\2\123 456.fcp" (copy "C:\test\1\123 456.fcp" C:\test\2 
\ )  else copy "C:\test\1\123 456.fcp" C:\test\3\ 
        1 Datei(en) kopiert. 
 
C:\>if not exist "C:\test\2\123.fcp" (copy "C:\test\1\123.fcp" C:\test\2\ )  els 
e copy "C:\test\1\123.fcp" C:\test\3\ 
        1 Datei(en) kopiert.
Und siehe da -
 C:\>dir c:\test\*.fcp /s 
 Verzeichnis von c:\test\1 
 
03.12.2010  11:46                15 123 456 789.fcp 
03.12.2010  11:46                15 123 456.fcp 
03.12.2010  11:46                 9 123.fcp 
               3 Datei(en)             39 Bytes 
 
 Verzeichnis von c:\test\2 
 
03.12.2010  11:46                15 123 456 789.fcp 
03.12.2010  11:46                15 123 456.fcp 
03.12.2010  11:46                 9 123.fcp 
               3 Datei(en)             39 Bytes 
 
 Verzeichnis von c:\test\3 
 
03.12.2010  11:46                 9 123.fcp 
               1 Datei(en)              9 Bytes
ich gehe dem oberen demo schnippsel noch ein paar Gänse samt Füsschen kaufen.

Gruß
Bitte warten ..
Mitglied: Machete
03.12.2010 um 13:37 Uhr
Vielen Dank für die Antworten und Tip bzw. schon fertigen Lösungen...
geht soweit auch ganz gut.

Kleinigkeit noch: Im Quellverzeichnis befindet sich eine Datei welche noch nicht im Zielverzeichnis liegt.
Diese wird dann aber nicht im Zielverzeichnis abgelegt wie gewünscht sonder ebenfalls wie bereits vorhandene Dateien in den Temp Ordner verschoben.

So sieht das Ganz bei mir aus:

C:\>for /r C:\Users\mag\Desktop\Quelle\ %a in (*.fcp)do if not exist C:\Users\ma
g\Desktop\Ziel\%~nxa (copy %a C:\Users\mag\Desktop\Temp) else copy %a C:\Users\m
ag\Desktop\Temp\

C:\>if not exist C:\Users\mag\Desktop\Ziel\DateiServer1.fcp (copy C:\Users\mag\D
esktop\Quelle\DateiServer1.fcp C:\Users\mag\Desktop\Temp ) else copy C:\Users\m
ag\Desktop\Quelle\DateiServer1.fcp C:\Users\mag\Desktop\Temp\
1 Datei(en) kopiert.

C:\>if not exist C:\Users\mag\Desktop\Ziel\DateiServer2.fcp (copy C:\Users\mag\D
esktop\Quelle\DateiServer2.fcp C:\Users\mag\Desktop\Temp ) else copy C:\Users\m
ag\Desktop\Quelle\DateiServer2.fcp C:\Users\mag\Desktop\Temp\
1 Datei(en) kopiert.

C:\>if not exist C:\Users\mag\Desktop\Ziel\DateiServer3.fcp (copy C:\Users\mag\D
esktop\Quelle\DateiServer3.fcp C:\Users\mag\Desktop\Temp ) else copy C:\Users\m
ag\Desktop\Quelle\DateiServer3.fcp C:\Users\mag\Desktop\Temp\
1 Datei(en) kopiert.

Gruß
Bitte warten ..
Mitglied: 60730
03.12.2010 um 14:05 Uhr
moin,

  • kunststück...

01.
C:\>for /r C:\Users\mag\Desktop\Quelle\ %a in (*.fcp)do if not exist C:\Users\mag\Desktop\Ziel\%~nxa (copy %a C:\User\mag\Desktop\Temp) else copy %a C:\Users\mag\Desktop\Temp\
Ich versuche das mal zu übersetzen...
Für jeden Treffer in "quelle", der irgendwie ins Muster *.fcp passt - kopiere wenn die nicht in "Ziel" vorhanden ist - diese nach Temp - andernfalls kopiere diese nach Temp.

Ergo _ egal ob oder ob nicht - als "ziel" wird immer temp genommen - ich hatte das aber anders skizziert:
  • Für jeden Treffer in "quelle", der irgendwie ins Muster*.fcp passt - kopiere wenn die nicht in "Ziel" vorhanden ist - diese nach ziel - andernfalls kopiere diese nach Temp.

Gruß
Bitte warten ..
Mitglied: Machete
03.12.2010 um 23:14 Uhr
Mein Fehler

Nun funktionier das Ganze per Prompt.
Wie kann ich das nun in eine Datei Packen um dies in einen geplanten Task zu legen?

Habe noch zwei andere Abgleiche welche ich mit rein packen möchte aber das bekomme ich hin (ist "nur" xCopy)

Gruß
Bitte warten ..
Mitglied: 60730
04.12.2010 um 01:20 Uhr
Servus,

du wolltest doch einen Lösungsansatz.
  • Mit welchem Befehl wurde denn die Lösung gefunden?
  • Wo findet man Hilfe zu dem Befehl? (in dem kleinen schwarzen Kästchen)
Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie...

Ich dachte - gelesen zu haben - du hättest bereits vorm Erstellen deiner Frage gesucht und trotzdem nix gefunden....
Hast du ganz offensichtlich weder vorm Frage hier stellen, als auch danach nicht gemacht. - Find ich traurig...

Gruß
Bitte warten ..
Mitglied: Machete
04.12.2010 um 14:32 Uhr
Zitat von 60730:

Ich dachte - gelesen zu haben - du hättest bereits vorm Erstellen deiner Frage gesucht und trotzdem nix gefunden....
Hast du ganz offensichtlich weder vorm Frage hier stellen, als auch danach nicht gemacht. - Find ich traurig...

Gruß


Bei der ersten Frage habe ich gesucht und nicht das richtige gefunden.
Bei der Frage wie ich das nun in eine Datei packe habe ich tatsächlich nicht gesucht, war aber keine böse Absicht.
Ich fand das dies als Abschluss noch gut in den Tread gepasst hätte.
Wenn der nächst etwas ähnliches sucht wäre hier dann alles komplett.

Finde ich weniger traurig sondern hilfreicher.

Ich bedanke mich für die Hilfe die ich erhalten habe, allerdings sollte man, wenn man mehr mosern als helfen möchte, vielleicht überlegen ob man auf eine Frage antworten möchte. Vielleicht gibt das Userfoto auch etwas Aufschluss

Mir war nicht klar dass das Adminforum nur etwas für Fortgeschrittene und nicht für Anfänger ist.

Vielen Dank nochmal und Gruß
Machete
Bitte warten ..
Mitglied: 60730
04.12.2010 um 22:00 Uhr
Moin,

lass es mich in kurze Worte fassen (so ich dessen mächtig bin, was viele zu recht bezweifeln)
Eine Unterhaltung sehe ich bidirektional - Dialog statt monolog.

Wie ich es in der Schule (nicht nur die des Lebens, sondern auch die mit den Zeugnisen) gelernt habe - bringt man jemandem nachhaltig etwas bei, wenn man Ihm Aufgaben stellt, die er lösen muß.

Deine Aufgabe an uns - die ich aufgenommen habe - einen vom User HelgeSchneider angefangenen Denkansatz für dein Problem zu erweiterten.

Jeder, der hier mitgeholfen hat, tippte Wörter wie:

dann musst du genauer werden in deiner Beschreibung:
Von daher.....etwas mehr Info/Probieren deinerseits wäre vielleicht auch ne Möglichkeit gewesen zum Ziel zu kommen....
Nur als Anmerkung (da ich ohne ausreichenden Input auch nur im Schneegestöber )

Wenn der nächst etwas ähnliches sucht wäre hier dann alles komplett.
Das ist wirklich die kleinste und somit deine Aufgabe gewesen, genauso wie den Pistaziengrünen Haken an diesen Fred.

Bitte sieh das so, wie es gemeint ist - und denk dran - irgendeiner muß mal meine/ Bastlas/Bibers unsere Rente erwirtschaften
Es bringt doch keinem was, wenn man "irgendwas" vorgekaut bekommt - sich nicht damit auseinander setzt (wie z.B das mit den 3 Ordnern) und solche Konstrukte dann in sein Live/produktivsystem einsetzt und keinen Blassen Dunst hat, warum weshalb wieso.

Und eine Zeile sei mir noch gestattet - in er letzten Zeit gab es sehr viele aktualisierungen im Administratorforum - mit dem Resultat, dass es teilweise nicht zur Verfügung stand - dieses unabhängig von meinem Avatarbild im Hinterkopf - sollte dir wirklich zeigen, dass du zur Not im Leben auf deine Beine gestellt bist.

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...