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 .

2voto

grenix Punkte 523

Zurück zur ursprünglichen Frage:

 xcopy "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\whee.config"

könnte mit zwei Befehlen durchgeführt werden, z. B:

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

Durch einfaches Anhängen von " \.. " an den Pfad der Zieldatei anhängen, wird das Zielverzeichnis erstellt, sofern es noch nicht existiert. In diesem Fall

"c:\mybackup\TestConnectionExternal\bin\Debug\"

das das übergeordnete Verzeichnis von des nicht existierenden Verzeichnisses

"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."

Zumindest für WIN7 mkdir kümmert es nicht, ob das Verzeichnis

"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"

wirklich existiert.

2voto

user140185 Punkte 31

Ich hatte ein ähnliches Problem und sowohl robocopy als auch xcopy haben nicht geholfen, da ich die Kommentare unterdrücken und einen anderen Zieldateinamen verwenden wollte. Ich fand

type filename.txt > destfolder\destfilename.txt

nach meinen Anforderungen arbeiten.

2voto

Thanos Punkte 41

Wenn Sie nur eine Datei kopieren und ihren Namen am Zielort ändern wollen, ist es richtig, dies zu tun:

xcopy /f /y "bin \development\example.exe " "TestConnectionExternal \bin\Debug\NewName.exe *"

Und es wird gut funktionieren

1voto

surferdj Punkte 27

Ich schlage vor robocopy anstelle von copy o xcopy . Wird als Befehl oder in der grafischen Benutzeroberfläche auf Clients oder Servern verwendet. Tolerant gegenüber Netzwerkpausen und Sie können wählen, ob die Dateiattribute beim Kopieren oder Kopieren nach Dateiattributen ignoriert werden sollen. Oh, und es unterstützt Multi-Core-Maschinen, so dass Dateien viel schneller "parallel" zueinander kopiert werden, anstatt sequentiell. robocopy finden Sie im MS TechNet.

1voto

MAZDA Punkte 11

Für das Duplizieren großer Dateien ist xopy mit dem Schalter /J eine gute Wahl. In diesem Fall geben Sie einfach ein F für Datei oder ein D für Verzeichnis an. Außerdem können Sie Aufträge in einem Array für spätere Referenzen speichern. Zum Beispiel:

$MyScriptBlock = {
    Param ($SOURCE, $DESTINATION) 
    'F' | XCOPY $SOURCE $DESTINATION /J/Y 
    #DESTINATION IS FILE, COPY WITHOUT PROMPT IN DIRECT BUFFER MODE
}
JOBS +=START-JOB -SCRIPTBLOCK $MyScriptBlock -ARGUMENTLIST $SOURCE,$DESTIBNATION
$JOBS | WAIT-JOB | REMOVE-JOB

Dank Chand mit ein paar Änderungen: https://stackoverflow.com/users/3705330/chand

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