如果想要在Windows上使用脚本(比如批处理脚本 .bat
)来复制指定文件夹下所有子文件夹中的视频文件到另一个目标文件夹,可以使用以下的批处理脚本示例:
@echo off
setlocal enabledelayedexpansion :: 设置源文件夹和目标文件夹的路径
set "sourceFolder=C:\path\to\source\folder"
set "targetFolder=C:\path\to\target\folder" :: 设置你想要复制的视频文件扩展名列表
set "videoExtensions=.mp4 .avi .mov" :: 确保目标文件夹存在
if not exist "%targetFolder%" mkdir "%targetFolder%" :: 遍历源文件夹下的所有文件和子文件夹
for /r "%sourceFolder%" %%F in (*) do ( :: 提取文件扩展名 set "fileExtension=%%~xF" :: 检查文件扩展名是否在视频扩展名列表中 for %%e in (%videoExtensions%) do ( if "!fileExtension!"=="%%~e" ( :: 复制文件到目标文件夹 echo Copying %%~nxF to %targetFolder% ... copy "%%F" "%targetFolder%\%%~nxF" >nul ) )
) echo Video files copied successfully.
pause
endlocal
注意以下几点:
- 将
C:\path\to\source\folder
和C:\path\to\target\folder
替换为你的实际源文件夹和目标文件夹的路径。 - 你可以根据需要修改
videoExtensions
变量,添加或删除你想要复制的视频文件扩展名。 for /r
循环会递归地遍历源文件夹及其所有子文件夹中的所有文件。%%~xF
用于提取文件的扩展名,%%~nxF
用于提取文件名和扩展名。copy
命令用于复制文件,>nul
用于隐藏任何可能的错误消息。echo
语句用于在命令提示符中显示正在复制的文件名(可选)。pause
命令用于在脚本完成后暂停,以便你可以看到“Video files copied successfully.”消息(可选)。
将上述代码保存为 .bat
文件,然后双击运行它,即可开始复制视频文件。
如果你想将源文件夹设置为批处理脚本所在的地址(也就是脚本的当前目录),你可以使用 %~dp0
这个特殊变量。这个变量会展开为批处理文件所在的驱动器和路径。
:: 获取脚本所在的目录(不包括脚本文件名本身)
set "sourceFolder=%~dp0"
如果源文件夹或目标文件夹包含中文字符或中文目录名,Windows 批处理脚本(.bat
)通常能够正常处理,因为 Windows 的命令行界面(CMD)支持中文字符。但是,为了确保一切顺利,你需要注意以下几点:
- 保存脚本文件的编码:确保你的批处理脚本文件是以 UTF-8 或 ANSI 编码保存的,这取决于你的系统默认编码。通常,使用记事本或其他文本编辑器创建的批处理脚本应该没有问题。
- 路径中的空格:如果目录名或文件名中包含空格,确保在引用路径时使用引号,如
"C:\带有空格的目录\文件.txt"
。 - 使用绝对路径:为了避免任何可能的路径解析问题,最好使用绝对路径而不是相对路径。
- 避免特殊字符:尽量避免在目录名或文件名中使用特殊字符,如
<
,>
,|
,&
,*
,?
,"
,:
,;
,/
,\
等,因为它们可能在命令行中有特殊含义。