Ich habe nicht genau herausgefunden, wie das Ändern des aktuellen Verzeichnisses dazu führt, dass der Befehl fehlschlägt, wenn er vor der Änderung funktioniert. Aber ich merke, dass die Zitate nicht optimal platziert sind. Leerzeichen im Pfad würden dazu führen, dass der Befehl fehlschlägt, obwohl es mir scheint, dass es unabhängig von Ihrem aktuellen Verzeichnis fehlschlagen sollte.
würde ich verwenden:
COPY "%~dp0Hello World.BAT" "C:\Hello World.bak"
das Zitat auf die Vorderseite des ersten Arguments zu verschieben ist potenziell wichtig. Für das zweite Argument ist es nicht wichtig, da es offensichtlich keine Leerzeichen im Pfad gibt, aber es sieht besser für mich aus.
bearbeiten
Nach Ihrer Frage genauer zu lesen, ich denke da an die Geschichte mehr sein muss. Wenn sich beide Batch-Dateien im Stammverzeichnis des Laufwerks C befinden, sollte Ihr ursprünglich veröffentlichter Code funktionieren.
Versuchen Sie, Ihr Skript zu bearbeiten, um zu diagnostizieren, was passiert. Setzen Sie ECHO vor den Kopierbefehl, damit Sie sehen können, was das Skript versucht. (Oder einfach stellen Sie sicher, Echo, aber dann kann es schwieriger sein, die richtige Zeile in der Ausgabe zu finden.)
echo COPY %~dp0"Hello World.BAT" C:\"Hello World.bak"
Wenn Sie immer noch nicht herausfinden, was falsch ist, die Ergebnisse veröffentlichen, damit andere vielleicht Hilfe.
Aber es sollte nicht notwendig sein.'% ~ Dp0' sollte unabhängig von der aktuellen zu irgendeinem Zeitpunkt in der Batch-Datei funktionieren Verzeichnis, oder irgendeinen anderen Faktor – dbenham
Oh, Entschuldigung ... Ich lese gerade den letzten Teil ... du suchst warum das passiert, nicht wie du es umgehen kannst? siehe meine Bearbeitung unter der ursprünglichen Antwort – iesou
Du bist wo ich war ursprünglich - siehe meine Antwort. Aber der Code sollte entweder funktionieren oder nicht funktionieren, unabhängig vom aktuellen Verzeichnis. – dbenham