{title}

Hallo, ich versuche ein Batch-Skript zu schreiben, das nur geänderte Dateien von einem Quellordner in einen Zielordner kopiert (ich bin sicher, dass XCOPY die Arbeit dafür erledigt). Vor dem Kopieren sollten jedoch alte Füllungen in das heutige Datum umbenannt und dann die neue Datei kopiert werden, was zu einer Sicherung der vorherigen Version zusammen mit der neuen Version führt. Ich möchte nicht alle Dateien sichern, sondern nur die Dateien, die sich geändert haben. Beispiel: Wenn eine Konfigurationsdatei geändert wird, kopiert mein Skript die neue Konfigurationsdatei, sollte jedoch die alte mit dem heutigen Datum umbenennen und dann die neue kopieren. Ich denke, es ist wahrscheinlich erforderlich, eine If-Datei zu schreiben, die älter als die neue Datei ist. Benennen Sie dann die alte Datei mit dem heutigen Datum um und kopieren Sie die neue Datei. Ich bin mir nicht sicher, wie ich das machen soll. Ich bin neu in der Stapelprogrammierung. Selbst wenn mir jemand eine Lösung in einfachen Worten und nicht im eigentlichen Programm geben kann, ist das immer noch in Ordnung. Ich bin mir nicht sicher, wie ich damit anfangen soll.

Der Schlüssel zu diesem Snippet ist das Ausführen von XCOPY im Vorschaumodus (Schalter/L). Mithilfe der Quellendateinamen können Sie Sicherungskopien der entsprechenden Dateien im Zielverzeichnis erstellen, bevor Sie sie tatsächlich mit XCOPY überschreiben. Code: @echo offset source = drive: pathset target = drive: pathset today =% date: ~ 10,4 %% date: ~ 4,2 %% date: ~ 7,2% for/f "tokens = delims =" %% i in ('Alle wiedergeben ^ | xcopy/l/d% source%% target % ^ | find/v/i "overwrite" ') do (falls vorhanden% target% %% ~ nxi copy% target% %% ~ nxi% target% %% ~ ni-% today %%% ~ xi ) alles wiedergeben | xcopy/d% source%% target%> Stellen Sie sicher, dass der Quelle und Ziel Variablen, die zu Ihrer Umgebung passen. Angenommen, Ihr Datumsformat lautet TT.MM.TT.JJJJ. Wenn nicht, die heute Variable muss neu konfiguriert werden. Quelldateien, die im Ziel nicht vorhanden sind, gelten als geänderte Dateien. Viel Glück.

Tolle. Genau das wollte ich. Danke mein Herr!!!

Der Code funktioniert perfekt für mich. Aber ich frage mich, ob es eine Möglichkeit gibt, die umbenannten Dateien zu protokollieren. Wenn zum Beispiel von Tausenden von Dateien nur 5 Dateien umbenannt wurden, gibt es eine Möglichkeit, dies herauszufinden? Vielen Dank für die Hilfe

Die hervorgehobene Zeile erstellt das Protokoll auf der Konsole. Bei Bedarf können Sie es in eine Datei umleiten. Viel Glück.

Das ist großartig, wie kann ich es jetzt schaffen, in alle Unterverzeichnisse zu gelangen und dasselbe zu tun? Grundsätzlich wird bei "if exist% target% %% ~ nxi" das Unterverzeichnis nicht dort abgelegt, so dass nach der Datei im Hauptverzeichnis gesucht wird, anstatt das Unterverzeichnis als Teil der Datei path.eg zu behalten .wenn vorhanden "M: Migration SmarterMail domain.com file.grp" (aber file.grp befindet sich tatsächlich in M: Migration SmarterMail domain.com Users test Inbox file.grpCode: @echo Quelle versetzen = C: SmarterMail domain.com Ziel festlegen = M: Migration SmarterMail domain.com Heute festlegen =% Datum: ~ 10,4 %% Datum: ~ 4,2 %% Datum: ~ 7,2 % for/f "tokens = delims =" %% i in ('alles ausgeben ^ | xcopy/l/d/E/I% source% target% ^ | find/v/i "überschreiben"') do (echo ÜBERPRÜFEN DES ZIELS: "% target% %% ~ nxi" falls vorhanden% target% %% ~ nxi (Echo EXXXXIIIIISSSSSSSSSTTTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSScopy "% target% %% ~ nxi" "% target% %% ~ ni-% % ~ xi ")) gibt alle | xcopy/d/E% source%% target%> nul aus

Auch wenn Ihre Frage anderen ähnlich ist, bitten wir Sie, einen eigenen Thread zu erstellen. Viele Antworten sind spezifisch für die OP-Frage. Wenn dies nicht möglich ist, fügen Sie das hinzu / s auf die umschalten XCOPY Befehl (beide). Dieser Beitrag ist über einen Monat alt und ich habe nicht mehr die Testdateien, die zum Testen der ursprünglichen Anforderung verwendet wurden. Diese Pflicht liegt bei Ihnen. Willkommen bei Computer Hope.

Ich weiß, dass dies ein 2 Monate alter Beitrag ist, der ursprünglich von mir begonnen wurde. Und ich stehe vor dem gleichen Problem wie "brockhensley". Weil ich so dumm bin und ohne längerfristig zu denken, habe ich eine Situation, in der die Anzahl der Verzeichnisse nicht mehr konstant ist Versuchte deine Lösung Sidewinder durch Hinzufügen von/s zu beiden xcopy und versuchte auch, damit herumzuspielen. Es funktioniert jedoch nicht bei mir. Ich bin mir nicht sicher, ob "brockhensley" es versucht hat. Ich schätze, es muss durch jedes Verzeichnis gehen. Und ich weiß, dass Sie auch nicht mehr die Testdateien haben. Wenn jemand irgendwelche Ideen hat, lassen Sie es mich wissen. Entschuldigungen für das Ausgraben von alten posts aber wenn jemand helfen könnte wäre das super.

Ich war vielleicht ein bisschen voreilig mit dem / s Schalter. Das / e Schalter kann eine bessere Wahl sein. Ich hatte auch die Dateinamen im Falle eingebetteter Leerzeichen. Ich hatte nicht meine ursprünglichen Testdateien, also habe ich die zurückdatiert / d Parameter wechseln und einige Mediendateien verwenden, über die ich mich gelegt habe. Das sollte in Ordnung sein, aber Sie werden es besser beurteilen. Code: @echo offset source = drive: pathset target = drive: pathset today =% date: ~ 10,4 %% date: ~ 4,2 %% Datum: ~ 7,2% für/f "tokens = delims =" %% i in ('alles wiedergeben ^ | xcopy/l/e/d "% source%" "% target%" ^ | find/v/i "overwrite" ') do (falls vorhanden "% target% %% ~ nxi" copy "% target% %% ~ nxi" "% target% %% ~ ni-% today %%% ~ xi"> nul ) alles wiedergeben | xcopy/d/e "% source%" "% target%"> nulGood luck.

Überraschenderweise, aber aus irgendeinem Grund scheint dies nicht für mich zu funktionieren. Besonders wenn ich Unterverzeichnisse habe. Wenn ich von einem Verzeichnis in ein anderes kopiere, ohne Geschwisterverzeichnisse einzubeziehen, funktioniert dies wie gewohnt. Ich teste es immer noch aus und hoffe, dass etwas nicht stimmt. Wenn Sie es jedoch erneut mit mehreren Unterverzeichnissen testen könnten und mich wissen lassen, ob es für Sie funktioniert oder nicht?

Gewonnene Erkenntnisse: Das Senden der Ausgabe Nr. 1 an das nul-Gerät ist keine Debugging-Technik. Nr. 2: Wenn Sie sich in einer Lücke befinden, hören Sie auf zu graben. Wenn Sie die Rekursion (den Schalter/e) verwenden, müssen Sie einen Teil des Pfades beibehalten, nur nicht den durch den definierten Teil Quellvariable. Batch-Code rekursiv sehr gut, Textverarbeitung nicht so sehr. VBScript beherrscht die Textverarbeitung sehr gut, die Rekursion muss im Detail codiert werden. Rexx kann beides sehr gut, erfordert aber einen Download. In Übereinstimmung mit der Idee, in Ihrem eigenen Garten nach einer Lösung zu suchen, kann dieses kleine Stück Doggerel helfen: Code: @echo offsetlocal enabledelayedexpansionset source = drive: pathset target = drive: pathset today =% date: ~ 10,4 %% date: ~ 4,2 %% date: ~ 7,2%: loopcall set mask = %% source: ~% len%, 8192 %% if "% mask% "==" "gehe zu nextset/a len + = 1goto loop: nextfor/f" tokens = delims = "%% i in ('Alle wiedergeben ^ | xcopy/l/e/d"% source% ""% target% " ^ | find/v/i "overwrite" ') do (setze fpath = %% ~ dpiset fpath =! fpath: ~% len%! falls vorhanden "% target%! fpath! %% ~ nxi" copy "% target% ! fpath! %% ~ nxi ""% target%! fpath! %% ~ ni-% today %%% ~ xi "> nul) echo all | xcopy/d/e "% source%" "% target%"> nulUm die Quellvariable aus dem Zielverzeichnis zu maskieren, wurde Code hinzugefügt, um die Länge der Quellvariablen zu bestimmen.Dies ermöglichte das Anhängen des richtigen Pfads zum Zielverzeichnis. Das Problem wurde schmerzhaft offensichtlich, nachdem die Umleitung zum nul-Gerät entfernt wurde (siehe Lektion 1 oben).

Wie kann dies geändert werden, um nur bestimmte Dateien auf einem Server umzubenennen und in einen anderen Ordner zu kopieren, um tägliche Sicherungen durchzuführen? Zum Beispiel: file1: s: sites site remediation db1.mdbrename bis s: sites site remediation backup db1.todaysdate.mbbfile2: usw. Wir haben Probleme mit ausgelagerten Diensten, einschließlich Sicherungen, und einige Dateien sind auf mysteriöse Weise Wenn wir beschädigt werden, verlieren wir lieber nur einen Tag an Daten und nicht eine Woche, während wir auf die Wiederherstellung der letzten Version warten

Hallo, bitte helfen Sie, ich muss als nächstes tun: Batch RenameRecursively finden Sie alle Dateien mit dem Namen Name1.txt und benennen Sie sie in Name2.txt. Der Pfad zu dem Ordner, in dem gearbeitet werden soll, ist ein externes Argument. Ich habe: @echo offset/p p1 = Bitte geben Sie den Pfad ein: Name1.txt umbenennen Name2.txtpausebut Es funktioniert nicht, daher sollte die Batch-Datei die Dateien in umbenennen Jedes Verzeichnis, das ich eingeben werde. Aber es schreibt: "Das System konnte die angegebene Datei nicht finden."

Wie Sidewinder in einer der vorherigen Antworten sagte. Es ist am besten, einen eigenen Thread zu starten, da Ihre Frage nicht mit diesem Thread vergleichbar ist. Die Umbenennung würde nicht durchgeführt, da Sie nach dem Pfad fragen und nicht zum Pfad gehen. Wie wäre es, wenn Sie versuchen würden, einen Code zu erstellen: cd "p1" und dann den Umbenennungsvorgang durchzuführen. Ich glaube, es wird immer noch nicht rekursiv zu irgendwelchen Unterverzeichnissen. Habe es nicht ausprobiert. Jemand hier könnte Ihnen eine bessere Lösung dafür bieten

Major Dos Partition Situation

Hallo Leute, als ich nicht zu Hause war, spielte mein Neffe ein Videospiel auf meinem PC. Beim Spielen eines Videospiels wird die Stromversorgung sofort unterbrochen. Als er versuchte neu zu starten, konnte das System Windows XP nicht laden. Die Meldung lautete "diskett error". Beim Booten mit der WinXP-CD wurde begonnen, Dateien auf die Festplatte zu kopieren, wie dies bei der Installation von winXP der Fall war. Im letzten Schritt gab es 2 Partitionen. Einer war D mit nfts-Dateiformat und der andere war c mit "unbekanntem" Dateiformat. Ich habe Laufwerk C: gelöscht und ein neues Laufwerk C mit dem Dateiformat "new raw" erstellt. Das System wies mich an, das Format einzurichten, ich konnte es nicht formatieren. In Laufwerk C ist ein Fehler aufgetreten. Als ich SCANDISK ausgeführt habe, wurde in dieser Meldung angezeigt, dass dieser Fehler verhindert, dass Scandisk das Problem behebt. Ich habe FDISK ausgeführt, aber es dauert zu lange (mehr als 5 Stunden), während die primäre Dos-Partition erstellt wurde. Fängt an, die Integrität auf 0-100% zu erhöhen und beginnt und endet immer wieder von Neuem. Bitte sag mir, was ich jetzt tun soll. Bitte hilf mir dabei.

Bitte führen Sie das entsprechende Festplatten-Diagnoseprogramm aus www.tacktech.com/display.cfm?ttid=287 Viel Glück.

Beliebte Beiträge