Akzeptiert der Kopierbefehl keine Variablen in der Befehlszeile?

Akzeptiert der Kopierbefehl keine Variablen in der Befehlszeile?

Wie kann ich eine Variable in einer Batchdatei für den Kopierbefehl verwenden, um den Pfad zum Stammordner bereitzustellen?

set destination= "c:\destination folder"
mkdir %destination%

SET source = "C:\source folder\"
SET source_full = "C:\source folder\simple file.txt"

rem this doesn't work
copy %source%\"simple file.txt" %destination%

rem this works
copy %source_full% %destination%

Antwort1

Entschuldigung, habe es zunächst falsch gelesen. Verwenden Sie beim Festlegen von Variablen keine Leerzeichen, dann Folgendes …

copy %source%\"simple file.txt" %destination%

wird dies

copy %source%"simple file.txt" %destination%

Beachten Sie, dass Ihre Quelle bereits ein "\" enthält und Sie eines außerhalb Ihrer Anführungszeichen hinzugefügt haben. Der Aufruf dieses Kopierbefehls hat also tatsächlich etwas Seltsames mit dem zusätzlichen Schrägstrich bewirkt.

Antwort2

Anscheinend kann man kein Leerzeichen zwischen der Variable und dem=

C:\Users\glennjackman>set destination= "c:\destination folder"

C:\Users\glennjackman>echo %destination%
 "c:\destination folder"

C:\Users\glennjackman>SET source = "C:\source folder\"

C:\Users\glennjackman>echo %source%
%source%

C:\Users\glennjackman>SET source= "C:\source folder\"

C:\Users\glennjackman>echo %source%
 "C:\source folder\"

Und es scheint, dass die Anführungszeichen den Variablennamen enthalten sollten:

C:\Users\glennjackman>set "destination=c:\destination folder"

C:\Users\glennjackman>SET "source=C:\source folder"

C:\Users\glennjackman>copy "%source%\simple file.txt" "%destination%"
        1 file(s) copied.

verwandte Informationen