Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 有没有办法让.bat脚本将文件和文件夹从一个驱动器复制到另一个驱动器?_Batch File - Fatal编程技术网

Batch file 有没有办法让.bat脚本将文件和文件夹从一个驱动器复制到另一个驱动器?

Batch file 有没有办法让.bat脚本将文件和文件夹从一个驱动器复制到另一个驱动器?,batch-file,Batch File,我正在尝试将闪存驱动器上的文件和文件夹复制到我插入的任何计算机的桌面上。我对命令行和批处理脚本有点熟悉,但没有用它以这种方式进行文件操作 我最初编写了一个脚本来测试将它从闪存驱动器复制到桌面,但是,问题是在一台新计算机上,我不会总是分配相同的驱动器号 我用来测试用已知驱动器号复制所有内容的代码,脚本从闪存驱动器上的文件夹开始,我要复制的是: copy aFile.file C:\Users\*user*\Desktop 其中user是我的用户文件夹 我现在遇到的主要问题是将内容从一个驱动器复制

我正在尝试将闪存驱动器上的文件和文件夹复制到我插入的任何计算机的桌面上。我对命令行和批处理脚本有点熟悉,但没有用它以这种方式进行文件操作

我最初编写了一个脚本来测试将它从闪存驱动器复制到桌面,但是,问题是在一台新计算机上,我不会总是分配相同的驱动器号

我用来测试用已知驱动器号复制所有内容的代码,脚本从闪存驱动器上的文件夹开始,我要复制的是:

copy aFile.file C:\Users\*user*\Desktop
其中user是我的用户文件夹

我现在遇到的主要问题是将内容从一个驱动器复制到另一个驱动器,在那里它需要进入用户配置文件

cd具有/D开关,该开关专门指定切换驱动器。 所以

转到活动用户的桌面。。。就在我想要的地方。 鉴于

不执行任何操作,因为用户位于单独的驱动器上

复制是否有类似于/D的内容?主要的问题是驱动字母变化和用户名变化。 用户名更改很容易处理,因为我可以使用%userprofile\Desktop

如果我们假设copy使用了与cd相同的开关(它没有),那么我基本上想要的是:

copy /D aFile.file %userprofile%\Desktop
我肯定我错过了一些相对简单的东西,但我没有看到任何似乎是我所需要的开关。
我也愿意使用robocopy,如果这更容易的话,但是属性(时间戳、所有者等)对我来说并不重要,所以我认为它不会立即对我有好处。

批处理脚本可能与
cd
尝试创建一个脚本,请求两个输入

@echo off
set /p var1="this is the file that will be moved"
set /p var2="this is the destination"
xcopy %var1% %var2%
echo copied!
pause >nul

这将要求两个输入,第一个输入要求文件,第二个是文件复制到

无需在特定驱动器中接收复制的文件
Copy/Y“aFile.file”“%UserProfile%\Desktop”
将当前目录中的
aFile.file
复制到当前登录用户的
Desktop
目录中。当我将其作为单个命令运行时,这会起作用,但由于脚本中的某些原因,它不会复制文件。如果你正确地重定向了你的桌面目录,它应该会工作,就像你原来的位置被修改成一个连接一样。当然,系统应该可以访问该位置,用户也应该有足够的权限对其进行写入。顺便说一句,你只显示了复制一个文件,你不能用这个命令复制文件夹,因为你需要非常旧的
XCopy
命令,或者取代它的
robocy
。你认为当前的工作目录是什么?批处理脚本容器?那么这个假设是错误的,;要指出这一点,请使用
%~dp0
(例如:
cd/D“%~dp0.”
)…根据aschipfl的注释,
复制/Y/B“%~dp0aFile.file”“%UserProfile%\Desktop\”
,因为当前目录可以,但不能是包含批处理文件的目录
%~dp0
引用包含批处理文件的文件夹,此字符串始终以反斜杠结尾。然后,将存储在批处理文件目录中的文件
aFile.file
复制到当前用户的桌面目录时,当前目录是什么并不重要。
copy /D aFile.file %userprofile%\Desktop
@echo off
set /p var1="this is the file that will be moved"
set /p var2="this is the destination"
xcopy %var1% %var2%
echo copied!
pause >nul