458 Stimmen

xcopy file, umbenennen, Meldung "Gibt xxx einen Dateinamen an..." unterdrücken

Das scheint ziemlich einfach zu sein, und vielleicht übersehe ich nur die richtige Flagge aber wie kann ich mit einem einzigen Befehl eine Datei von einem Verzeichnis in ein anderes kopieren und sie im Zielverzeichnis umbenennen? Hier ist mein Befehl:

if exist "bin\development\whee.config.example"
  if not exist "TestConnectionExternal\bin\Debug\whee.config"
    xcopy "bin\development\whee.config.example"
          "TestConnectionExternal\bin\Debug\whee.config"

Es fordert mich jedes Mal mit folgendem Text auf:

Hat TestConnectionExternal \bin\Debug\whee.config einen Dateinamen angeben oder einen Verzeichnisnamen auf dem Ziel (F = Datei, D = Verzeichnis)?

Ich möchte diese Aufforderung unterdrücken; die Antwort lautet immer F .

683voto

Shea Punkte 10819

Ich benutze

echo f | xcopy /f /y srcfile destfile

um sie zu umgehen.

244voto

LBushkin Punkte 124894

Verwenden Sie nicht die xcopy verwenden copy stattdessen gibt es dieses Problem nicht.

xcopy wird im Allgemeinen verwendet, wenn Sie rekursive Kopien mehrerer Dateien/Ordner durchführen oder wenn Sie die Überprüfungs-/Aufforderungsfunktionen benötigen, die es bietet. Für einzelne Dateikopien wird der copy Befehl funktioniert einwandfrei.

199voto

zippycoder Punkte 2064

Eine andere Möglichkeit ist die Verwendung eines Platzhalters für das Ziel. Beachten Sie, dass dies nur funktioniert, wenn die Quell- und Zieldateinamen gleich sind. Auch wenn dies nicht die Lösung für das spezifische Beispiel des Auftraggebers ist, dachte ich, dass es sich lohnt, es zu teilen.

Zum Beispiel:

xcopy /y "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\*" 

legt eine Kopie der Datei "whee.config.example" im Zielverzeichnis an, ohne nach Datei oder Verzeichnis zu fragen.

Update : Wie von @chapluck erwähnt:

Sie können ändern "* " a "[newFileName].*" . Er behält die Dateierweiterung bei, erlaubt aber die Umbenennung. Oder mehr hacky: "[newFileName].[newExt]*" Erweiterung ändern

109voto

ienaxxx Punkte 1222

Es gibt eine Art undokumentierte Funktion in XCOPY, die Sie verwenden können:

xcopy "bin \development\whee.config.example " "c: \mybackup\TestConnectionExternal\bin\Debug\whee.config *"

Ich habe es gerade heute getestet :-)

74voto

Bill Punkte 939

Gehen Sie einfach zu http://technet.microsoft.com/en-us/library/bb491035.aspx

Das Hauptproblem ist folgendes: "... Wenn das Ziel kein bestehendes Verzeichnis enthält und nicht mit einem Backslash endet (), erscheint die folgende Meldung: ...

Gibt das Ziel einen Dateinamen an oder einen Verzeichnisnamen auf dem Ziel (F = Datei, D = Verzeichnis)?

Sie können diese Meldung unterdrücken, indem Sie die Befehlszeilenoption /i verwenden, die xcopy veranlasst, anzunehmen, dass das Ziel ein Verzeichnis ist, wenn die Quelle mehr als eine Datei oder ein Verzeichnis ist.

Ich habe eine Weile gebraucht, aber alles, was ich brauche, ist RTFM.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X