You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写批处理文件检测、计数并解密多个新上传加密文件?

批处理多文件解密与新增数量统计方案

要实现检测新增文件、统计数量并批量解密,核心思路是记录上次处理的时间戳,以此筛选出本次运行时新增的文件,再通过循环逐个处理。以下是修改后的代码:

@echo off
setlocal enabledelayedexpansion

:: 定义路径和配置
set "SOURCE_DIR=."  :: 当前目录,可替换为实际文件夹路径
set "OUTPUT_DIR=OUTPUT FOLDER"  :: 输出文件夹,确保已创建
set "LAST_RUN_FILE=last_run.txt"
set "PASSPHRASE=你的密码"

:: 初始化计数器
set "FILE_COUNT=0"

:: 读取上次处理时间,若文件不存在则设为一个很早的时间
if not exist "%LAST_RUN_FILE%" (
    set "LAST_TIME=1970-01-01 00:00:00"
) else (
    set /p LAST_TIME=<"%LAST_RUN_FILE%"
)

:: 获取当前时间,格式与dir输出匹配(YYYY-MM-DD HH:MM)
for /f "tokens=1-2 delims= " %%a in ('echo %date% %time%') do (
    set "CURRENT_TIME=%%a %%b"
)

:: 遍历并处理新增文件(仅处理文件,排除目录,按创建时间排序)
for /f "delims=" %%i in ('dir /b/a-d/od/t:c "%SOURCE_DIR%" ^| findstr /v /c:"%LAST_RUN_FILE%"') do (
    :: 获取文件的创建时间
    for /f "tokens=1-2 delims= " %%a in ('dir /t:c "%SOURCE_DIR%\%%i" ^| findstr /c:"%%i"') do (
        set "FILE_TIME=%%a %%b"
    )
    
    :: 比较文件时间是否晚于上次处理时间
    if "!FILE_TIME!" gtr "!LAST_TIME!" (
        set /a FILE_COUNT+=1
        echo 正在解密第!FILE_COUNT!个文件: %%i
        gpg --batch --passphrase="%PASSPHRASE%" --output "%OUTPUT_DIR%\%%i" --decrypt "%SOURCE_DIR%\%%i"
    )
)

:: 输出统计结果
if %FILE_COUNT% equ 0 (
    echo 本次无新增文件
) else (
    echo 本次共处理 %FILE_COUNT% 个新增文件
)

:: 更新上次处理时间到文件
echo %CURRENT_TIME% > "%LAST_RUN_FILE%"

timeout 50
endlocal

代码关键部分说明

  • setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环内变量(比如计数器FILE_COUNT)能实时更新。
  • LAST_RUN_FILE:用于存储上次处理的时间戳,首次运行时自动创建,后续每次运行都会读取并更新这个时间。
  • 时间比较:通过dir /t:c获取文件创建时间,与上次处理时间对比,筛选出新增文件。
  • 计数器FILE_COUNT:每处理一个新增文件就自增,最后输出统计数量。
  • 排除日志文件:用findstr /v /c:"%LAST_RUN_FILE%"避免把记录时间的日志文件当作待解密文件处理。

注意事项

  1. 确保OUTPUT_DIR指定的文件夹已存在,否则解密会失败,可在代码开头添加mkdir "%OUTPUT_DIR%" 2>nul自动创建。
  2. 时间格式需与系统dir命令输出的格式匹配,若你的系统时间格式不同,需调整时间截取的逻辑。
  3. 替换PASSPHRASE为实际的GPG密码,若担心明文泄露,可考虑用GPG密钥环替代明文密码。

内容的提问来源于stack exchange,提问作者Zafzaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:22:31