从不断变化的目录中复制文件和文件夹[关闭]
Posted
技术标签:
【中文标题】从不断变化的目录中复制文件和文件夹[关闭]【英文标题】:xcopy file and folder from a changing directory [closed] 【发布时间】:2020-09-18 03:03:40 【问题描述】:我在尝试 Xcopy 文件时收到 0 个文件已复制消息。 请注意,我通过指定确切的源路径成功地做到了这一点,如下所示:
xcopy /y %USERPROFILE%\Desktop\WinXTweak\program1.exe %WINDIR%\
xcopy /y %USERPROFILE%\Desktop\WinXTweak\program2.exe %WINDIR%\
xcopy /y %USERPROFILE%\Desktop\WinXTweak\program3.exe %WINDIR%\
当然,这只有在 WinXTweak 文件夹在桌面上时才有效。我希望能够将它复制到 USB 驱动器或我 PC 中的任何位置并运行它。批处理文件的位置也在 WinXTweak 文件夹中。我不知道该怎么办。我尝试了以下方法,但确实失败了。
xcopy /y program1.exe %WINDIR%\
xcopy /y program2.exe %WINDIR%\
xcopy /y program3.exe %WINDIR%\
提前谢谢大家,
【问题讨论】:
您正在使用%WINDIR%
作为您的目标目录。即使您要使用更现代的替代旧变量%SYSTEMROOT%
,该目录也可能是受保护的位置。当你用不同的目录测试它时会发生什么?或者,在同一位置但以“管理员身份”运行脚本?
在您的示例中,需要管理员权限,如@Compo 所说。除此之外,您的示例应该可以工作,但请尝试使用 xcopy "<source>" "<destination>" /y
之类的引号将源目录和目标目录括起来
为了在任何有效位置执行命令,请结合在 Dir 命令上运行的 For /F` 循环,例如:For %%I in ("program1.exe" "program2.exe" "program3.exe") Do For /F "Delims=" %%F in ('dir /b %%I /s') Do xcopy /y "%%~F" "%Destination%"
基于您只是复制文件而不使用xcopy 的各种选项的事实,我建议您也将该命令替换为内部copy 命令。例如@For %%G In (1 2 3) Do @Copy /Y "program%%G.exe" "%SystemRoot%" 1>NUL 2>&1
.
【参考方案1】:
感谢大家的回复。在线阅读更多内容后,我能够使用以下代码解决问题。我是这方面的新手,可能有一种更简单的方法,这就是我使用的方法。
@echo off
set source=%~dp0*.exe
set target="%WINDIR%"
xcopy /y "%source%" "%target%"
我会记下并学习建议的答案,以便将来使用。
感谢您的帮助和最诚挚的问候,
【讨论】:
除了您已经在 cmets 中给出的建议之外,我建议您更改您的set
命令以使用推荐的语法。将set source=%~dp0*.exe
更改为set "source=%~dp0*.exe"
,将set target="%WINDIR%"
更改为set "target=%WINDIR%"
。以上是关于从不断变化的目录中复制文件和文件夹[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
按文本字符长度对目录中的文件进行排序并复制到其他目录[关闭]
将文件名中具有特定字符串的目录中的所有文件复制到Bash中的不同目录[关闭]