Kopieren von Dateien von einem Pfad mit %~dp0% funktioniert nicht

Beachten Sie, dass ich bin falsch in der Annahme, dass ich verwenden soll %~dp0% um den Pfad ohne den Dateinamen der batch-Datei, die Sie von innen. Ich bin verlassen, die Frage ist, wie ich gesehen habe, die anderen mit der gleichen fehlerhaften Prämisse. Finden Sie die akzeptierte Antwort, und seinen Kommentar, für weitere Informationen.


Als viel mehr von den fortgeschrittenen Windows-Nutzer kennen den Ausdruck %~dp0% in einer batch-Datei ausgewertet werden, um die batch-Datei im Verzeichnis einschließlich den nachgestellten umgekehrten Schrägstrich.

Wenn ich eine batch-Datei in D:\ mit echo %~dp0% die Zeile verhält sich wie erwartet und Ausgang D:\.

Das problem

Ist, wenn ich eine Datei D:\FILETOCOPY.txt und eine batch-Datei D:\problem.bat mit folgendem Inhalt:

@ECHO OFF

copy D:\FILETOCOPY.txt %userprofile%\FILECOPIEDA.txt

copy %~dp0%FILETOCOPY.txt %userprofile%\FILECOPIEDB.txt

set Evaluated=%~dp0%FILETOCOPY.txt
copy %Evaluated% %userprofile%\FILECOPIEDC.txt

cmd.exe

Bekomme ich diese Ausgabe, wenn ich es ausführen (durch Doppelklick) auf:

        1 file(s) copied.
The system cannot find the path specified.
        1 file(s) copied.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

D:\>

Und die Datei %userprofile%\FILECOPIEDB.txt fehlt das Ziel. Es funktioniert, wie bewiesen durch FILECOPIEDC.txt wenn ich bewerten die %~dp0% auf einer separaten Zeile. Es scheint, dass es vermasselt dem kopieren der Datei irgendwie, aber es funktioniert, wie erwartet, in die Mitte eine echo-Zeile.

Genau was ist hier Los?

  • Ändern Sie die drei Aufrufe copy zu echo statt, und führen Sie die batch-Datei. Schauen Sie genau auf die Ausgabe, besonders der zweite echo. Siehst du zwei getrennte Aussagen (wie die erste und die Dritte)?
InformationsquelleAutor bonzaibanzai | 2014-01-23
Schreibe einen Kommentar