批处理:将具有特定文件名的不同子文件夹中的文件复制到其他目标

时间:2016-10-07 10:52:36

标签: windows batch-file copy-paste

我是初学者,在Windows中复制文件需要帮助。我在不同的子文件夹中有xlsx文件。我要复制的文件的名称包含(但不限于)"Reporting Assessment Tool"。我想复制包含该名称的所有文件并将它们带到平面源目的地(不需要文件夹结构)。

来源:c:\ users \ name \ desktop \ upload
destination:c:\ users \ source \ desktop \ tool

到目前为止,我已尝试过以下

cd /D "c:\users\jubalkheimer\desktop\upload" @for /r %%a in ("*Reporting Assessment Tool.xlsx") do ( 
copy "%%a" "c:\users\jubalkheimer\desktop\tool\"%%~a")

我没有收到错误消息,但文件无法复制....

你能帮忙吗? 非常感谢

1 个答案:

答案 0 :(得分:0)

此任务的批处理文件代码可以是:

@echo off
for /R "%USERPROFILE%\desktop\upload" %%I in ("*Reporting Assessment Tool.xlsx") do (
    copy /-Y "%%I" "%USERPROFILE%\desktop\tool\%%~nxI"
)

这也可以通过批处理文件中的单个命令行完成:

@for /R "%USERPROFILE%\desktop\upload" %%I in ("*Reporting Assessment Tool.xlsx") do @copy /-Y "%%I" "%USERPROFILE%\desktop\tool\%%~nxI"

区分大小写的循环变量I在每个循环上保存带有完整路径的文件名,不包含在指定目录中找到的双引号或该目录中与文件名模式匹配的任何子目录{{1 }}

为了复制找到的文件,并提示批处理文件的用户覆盖目标目录中具有相同名称的现有文件,必须将分配给循环变量的字符串指定为第一个参数,并将目标路径指定为第二个参数并且只是没有路径的找到文件的文件名和文件扩展名。这解释了 COPY中*Reporting Assessment Tool.xlsx(带有扩展名的文件名和用双引号括起的完整路径)和"%%I"(仅用双引号括起来的文件名和文件扩展名,固定目标路径)的用法命令行。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • "Target Path\%%~nxI"
  • copy /?
  • echo /?

for /?引用预定义的环境变量%USERPROFILE%,该变量包含当前用户帐户的配置文件目录的路径。

如果不使用Windows资源管理器使用批处理文件,也可以轻松完成此任务。

  1. 导航到文件夹USERPROFILE
  2. 在该文件夹中运行搜索%USERPROFILE%\desktop\upload
    Windows资源管理器会自动在该文件夹和所有子文件夹中搜索与该文件名模式匹配的文件。
  3. 使用 Ctrl + A 选择所有找到的文件(全选)。
  4. 使用 Ctrl + C (复制)准备复制所有选定的文件。
  5. 导航到文件夹*Reporting Assessment Tool.xlsx
  6. 使用 Ctrl + V (粘贴)粘贴准备复制的文件,这样会立即复制文件。