首页 未分类 正文

bat提取当前目录下及所有子目录指定文件再复制到指定文件夹

emer 未分类 阅读 63
相关问题

bat提取所有目录下指定后缀文件复制到指定文件夹

在Windows批处理(BAT)脚本中,你可以通过 for /r命令递归搜索指定目录及其子目录,并利用 dir命令筛选出特定后缀的文件,然后使用 copy命令将它们复制到目标文件夹。这里是一个基本的例子:

@echo off
setlocal enabledelayedexpansion

:: 设置源目录、目标目录和文件后缀
set src_dir=C:\source\directory
set dest_dir=C:\destination\folder
set file_ext=".txt"   :: 更改为你需要的文件后缀

:: 使用for /r命令查找指定目录下的指定后缀文件
for /r %src_dir% %%f in (*.%file_ext%) do (
    set file_path=%%f
    :: 将文件路径转换为完整的目标路径
    set target_file=%dest_dir%\!file_path:~(%src_dir%.len()!,)!
    echo Copying !file_path! to !target_file!

    rem 这里可以添加实际的复制操作,如果需要跳过确认,替换下面两行
    copy "!file_path!" "!target_file!"
)

rem 如果有错误,这里可以追加错误日志处理或其他逻辑
endlocal

这个脚本会遍历 src_dir中的所有 .txt文件,并尝试复制到 dest_dir内相应的位置。enabledelayedexpansion用于在循环内部修改变量值,~()用于字符串裁剪。

注意:在实际运行批量文件前,记得检查其权限,特别是复制文件时,可能会因为权限不足导致失败。另外,批处理命令行不支持直接处理用户交互,所以这里的确认复制操作仅显示了消息。

删除指定目录文件下日期超过30天的所有子文件夹的bat脚本

您好,这是一个删除指定目录文件下日期超过30天的所有子文件夹的bat脚本:

@echo off
setlocal enableextensions

set "rootFolder=C:\example\folder"
set "cutoffDate=%date%"

for /f "tokens=1-3 delims=/ " %%a in ("%cutoffDate%") do (
    set /a "day=10000*%%c+100*%%b+%%a"
    set /a "day-=30"
    set "cutoffDate=%%c-%%b-%%a"
)

for /d %%d in ("%rootFolder%\*") do (
    for /f "tokens=1-3 delims=/ " %%a in ("%%~td") do (
        set /a "day=10000*%%c+100*%%b+%%a"
        if !day! lss %day% (
            rmdir /s /q "%%~fd"
        )
    )
)

endlocal

请将 rootFolder 变量替换为您要删除子文件夹的目录。脚本会计算出当前日期减去30天的日期,并删除所有子文件夹中最后修改日期早于此日期的文件夹。

声明:本站所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 九千博客
【稀缺资源】【寻找回来的世界】【1985播出】【全12集TS】【每集约170MB】许亚军、宋丹丹等主演
« 上一篇 2024-12-17
免费4000+Lightroom预设包免费分享,涵盖LUT调色
下一篇 » 2024-10-13

发表评论

还没有评论, 告诉我们你的想法