【发布时间】:2020-01-04 02:10:50
【问题描述】:
我正在尝试将闪存驱动器上的文件和文件夹复制到插入它的任何计算机的桌面上。我对命令行和批处理脚本有些熟悉,但没有用它来以这种方式进行文件操作。
我最初编写了一个脚本来测试将它从我的闪存驱动器复制到我的桌面,但是,问题出在一台新计算机上,我不会总是分配相同的驱动器号。
我用来测试复制所有具有已知驱动器号的代码,脚本开始于我要复制的闪存驱动器上的文件夹中:
copy aFile.file C:\Users\*user*\Desktop
user 是我的用户文件夹。
我现在遇到的主要问题是将内容从一个驱动器复制到另一个需要进入用户配置文件的驱动器
cd 有 /D 开关,专门指定切换驱动器。 所以
cd /D %userprofile%\Desktop
转到活动用户的桌面...就在我想要的位置。 而
cd %userprofile%\Desktop
什么都不做,因为用户在单独的驱动器上。
是否有类似于 /D 的复制?主要问题是驱动器字母更改和用户名更改。 用户名更改很容易处理,因为我可以使用 %userprofile\Desktop。
如果我们假设副本使用与 cd 相同的开关(它没有),那么我基本上想要的是:
copy /D aFile.file %userprofile%\Desktop
我确信我错过了一些相对简单的东西,但我没有看到任何似乎是我需要的开关。 如果这样更容易的话,我也愿意使用 robocopy,但属性(时间戳、所有者等)对我来说并不重要,所以我认为它不会立即使我受益。
【问题讨论】:
-
无需在特定驱动器中接收复制文件!
Copy /Y "aFile.file" "%UserProfile%\Desktop"将位于当前目录中的aFile.file复制到当前登录用户的Desktop目录中。 -
当我将它作为单个命令运行时有效,但由于某种原因在脚本中它不会复制文件。关于可能导致这种情况的任何想法?
-
如果您已正确重定向您的桌面目录,它应该可以工作,如果您的原始位置随后被修改为一个交汇点,它应该可以工作。当然,系统应该可以访问该位置,并且用户也应该有足够的权限来写入它。顺便说一句,您只显示了复制文件,您不能使用该命令复制文件夹,因为您需要非常旧的
XCopy命令,或取代它的RoboCopy。 -
你认为当前的工作目录是什么?批处理脚本容器?好吧,这个假设是错误的;要指出这一点,请使用
%~dp0(例如:cd /D "%~dp0.")... -
根据 aschipfl 的评论,
copy /Y /B "%~dp0aFile.file" "%UserProfile%\Desktop\"怎么样,因为当前目录可以,但不能是包含批处理文件的目录?%~dp0引用包含批处理文件的文件夹,此字符串始终以反斜杠结尾。那么将批处理文件目录下的文件aFile.file复制到当前用户的桌面目录,不管当前目录是什么。
标签: batch-file