其他资源:

其他资源:

我希望能够将批处理文件放在任何目录中,并让其将文件复制到指定目录。我尝试过使用:

set path="%~dp0"
copy "%path%\test.txt" "C:\"
pushd "%~dp0"
copy "%~dp0\test.txt" "C:\"
copy "\test.txt" "C:\" 

但唯一有效的方法是输入文件的完整目录

copy "C:\WORK\PRogramering1\test.txt" "C:\" 

每次我运行代码时,我都会在管理员模式下运行,所以这不是问题。我尝试使用通过谷歌搜索找到的解决方案,但没有帮助。

答案1

harrymc 的评论

从你的描述中我感觉这个 .bat 文件就足够了:copy "test.txt" "C:\"。这太简单了,请提供更多细节。注意:C:应避免将根目录作为工作场所,并保留给 Windows

问题是我试图将文件复制到需要管理员权限的目录中,所以当我更改目录时,harrymc 告诉我使用的代码有效

答案2

@echo off 

::-------------------------------------------------::

                 copy /y "%~dp0test.txt" "C:\" 

pause 
::-------------------------------------------------::

pushd "%~dp0" 
                 copy /y .\"test.txt" "C:\"
                 copy "test.txt" "C:\"
popd
pause
::-------------------------------------------------::

pushd "C:\"
                 copy /y "%~dp0test.txt" .
                 copy /y "%_path%\test.txt" .
popd
pause 
::-------------------------------------------------::

set "_path=%~dp0"
                 copy /y "%_path%test.txt" "C:\"
                 copy /y "%_path%\test.txt" "C:\"
pause 
::-------------------------------------------------::

setlocal
set "_path_file=%~dp0test.txt"
                 copy /y "%_path_file%" "C:\" 
endlocal
::-------------------------------------------------::

1了解%Path%变量,它是一个系统变量,所以避免使用它(以及其他变量),这确实会导致意外的行为。


2.ss64.com 的建议/提示set命令:

The first character of the name must not be numeric. It is a common practice to prefix variable names with either an undescore or a dollar sign _variable or $variable, these prefixes are not required but help to prevent any confusion with the standard built-in Windows Environment variables or any other other command strings.


其他资源:

标准(内置)变量

相关内容