标题: [文本处理] 文件监控的批处理代码请协助修改 [打印本页]
作者: lianglidong 时间: 2023-10-31 01:01 标题: 文件监控的批处理代码请协助修改
要实现实时监控目标文件夹的文件数量,显示目标文件夹的文件数量,当在目标文件夹的文件数量小于2时,从主目录的多个文件夹中移动文件到目标文件夹(同名文件不进行替换处理),可以使用批处理脚本结合循环和定时器的方式来实现。以下是一个示例的批处理脚本:- @echo off
-
- set "main_folder=C:\path\to\main_folder"
- set "target_folder=C:\path\to\target_folder"
- set "file_limit=2"
- set "interval_seconds=10"
-
- :monitor
- REM 获取目标文件夹中的文件数量
- set "target_files=0"
- for /f %%f in ('dir /a-d /b "%target_folder%\*" 2^>nul ^| find /v /c ""') do set "target_files=%%f"
-
- REM 显示目标文件夹的文件数量
- echo Target folder file count: %target_files%
-
- REM 如果目标文件夹中的文件数量小于设定的限制
- if %target_files% lss %file_limit% (
- REM 遍历主目录下的子目录
- for /d %%d in ("%main_folder%\*") do (
- REM 遍历子目录中的文件
- for /r "%%d" %%f in (*) do (
- REM 检查目标文件夹中是否已存在同名文件
- if not exist "%target_folder%\%%~nxf" (
- REM 将文件移动到目标文件夹
- move "%%f" "%target_folder%\"
- )
- )
- )
- )
-
- REM 等待一段时间后再次监控
- timeout /t %interval_seconds% >nul
- goto monitor
复制代码
在脚本中,你需要将 main_folder 和 target_folder 的路径替换为实际的文件夹路径,并根据需要调整 file_limit 的值,表示目标文件夹的文件数量限制。同时,你可以根据需要调整 interval_seconds 的值,表示监控的时间间隔(以秒为单位)。
脚本会不断循环监控目标文件夹的文件数量,并在目标文件夹的文件数量小于设定的限制时,从主目录的多个文件夹中移动文件到目标文件夹。移动文件的操作使用 move 命令,并通过检查目标文件夹中是否已存在同名文件来避免替换文件。
脚本会每隔指定的时间间隔执行一次监控操作,并使用 timeout 命令来等待一段时间。在每次监控时,脚本会显示目标文件夹的文件数量。你可以根据需要调整 interval_seconds 的值来设置监控的频率。
请大神帮忙看下哪里不对,帮忙修改下
作者: 77七 时间: 2023-10-31 07:37
- REM 如果目标文件夹中的文件数量小于设定的限制
- if %target_files% lss %file_limit% (
- REM 遍历主目录下的子目录
- for /d %%d in ("%main_folder%\*") do (
- REM 遍历子目录中的文件
- pushd "%%d"
- for %%f in (*) do (
- REM 检查目标文件夹中是否已存在同名文件
- if not exist "%target_folder%\%%~nxf" (
- REM 将文件移动到目标文件夹
- move "%%f" "%target_folder%\"
- )
- )
- popd
- )
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |