/ / Unerwartete Ergebnisse mit Kopierbefehl und Excel-Dateien - Microsoft Excel, Befehlszeile, Batch-Datei, Datei√ľbertragung

Unerwartete Ergebnisse mit Kopierbefehl und Excel-Dateien - Microsoft Excel, Befehlszeile, Batch-Datei, Datei√ľbertragung

Beim Ausf√ľhren des Befehls "Kopieren" aus einer Windows-Batchdatei ist mir etwas Merkw√ľrdiges aufgefallen. Ich habe mich gefragt, ob dies zuvor bereits jemand festgestellt hat und die Ursache erkl√§ren kann.

Ich habe eine Zeile in einer Batch-Datei, die eine Excel-Datei von Speicherort A nach Speicherort B kopiert und die Datei auch umbenennt. Beispielsweise:

Copy \serversharefolderlocationAfile_*.xlsx \serversharefolderlocationBfile.xlsx /y

Die Kopie scheint vollst√§ndig zu sein, da sich die Excel-Datei an Position B befindet. Beim √Ėffnen der Datei erhalte ich jedoch die folgende Fehlermeldung:

"Excel kann die Datei nicht √∂ffnen ..., da das Dateiformat oder die Dateierweiterung ung√ľltig ist. Stellen Sie sicher, dass die Datei nicht besch√§digt ist und die Dateierweiterung dem Format der Datei entspricht."

Ich habe einige Tests mit der obigen Kommandozeile und ausgef√ľhrtBeachten Sie, dass dieses Problem nur auftritt, wenn ich in Teil A einen Platzhalter im Dateinamen verwende. Die Datei wird beispielsweise kopiert und kann problemlos mit dem folgenden Befehl ge√∂ffnet werden:

Copy \serversharefolderlocationAfile_LongName.xlsx \serversharefolderlocationBfile.xlsx /y

Mir ist klar, dass es zahlreiche Möglichkeiten gibt, dies zu beheben, aber ich bin nicht an einer Lösung interessiert, ich bin an einer Erklärung interessiert. Meine Frage ist Warum passiert dies?

Antworten:

3 f√ľr Antwort ‚ĄĖ 1

Der Grund, warum Sie dieses Problem sehen, ist, dass das Wildcard - Muster das wechselt COPY Befehl in den Verkettungsmodus, der f√ľr ASCII-Dateien im Klartext konzipiert ist. Im ASCII-Modus sehen einige Daten in Bin√§rdateien wie ein "Dateiende" -Zeichen aus.


Excel .XLSX-Dateien sind im Wesentlichen Zip-Archive mit einer anderen Erweiterung und Zip-Archive sind Binärdateien, keine ASCII-Dateien. Das COPY Befehl behandelt diese Binärdatei als ASCII-Dateien und versucht, den Inhalt mit nichts zu verketten.

Man k√∂nnte meinen, eine Datei mit nichts zu verketten, w√ľrde Ihnen die gleiche Datei liefern, mit der Sie begonnen haben, aber in diesem Fall nicht.

Das COPY Befehl setzt die Verarbeitung einer Datei nur fort, bis ein erreicht wird EOF-Zeichen (End of File). Sobald dieses Zeichen erreicht ist, wird mit der nächsten Datei fortgefahren. (In diesem Fall wird die Verarbeitung vollständig gestoppt.)

Ihre bin√§ren Excel-Dateien enthalten Daten, die bei der Konvertierung in ASCII EOF-Zeichen darstellen. Daher wird die Verkettung der Datei fr√ľher als erwartet beendet.

Um dies zu veranschaulichen, habe ich Ihre verwendet COPY Befehl zum Verketten einer 7zip - Datei mit einer leeren Excel - Datei (ich habe sie gerade umbenannt in file_1.xlsx und file_2.xlsx). Ich habe die 7zip-Datei und die Ausgabedatei in Notepad ++ geöffnet und den Inhalt mit WinMerge verglichen.

WinMerge-Vergleich

Wie Sie im Bild sehen können, sind die beiden Dateien bis zum (1A) Charakter.

Als n√§chstes verkettete ich zwei reine Textdateien, die einwandfrei funktionierten. Sobald ich dies jedoch eingef√ľgt habe (1A) Zeichen (das in Notepad ++ als angezeigt wird) (sub)) in eine der Textdateien konnte ich best√§tigen, dass die COPY Der Befehl wurde genau an diesem Punkt gestoppt und ging zur n√§chsten Datei √ľber.

Verkettung in Notepad ++