# FileCopyTool **Repository Path**: xjxjin/FileCopyTool ## Basic Information - **Project Name**: FileCopyTool - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-29 - **Last Updated**: 2026-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文件 / 文件夹复制工具(自包含版) > 💡 **完全不依赖电脑上已安装的 JDK** —— 本文件夹自带完整 JDK(`jdk/` 目录), > 复制到任何 Windows 电脑都能直接用,无需预先安装 Java。 --- ## ✨ 功能特性 | 特性 | 说明 | | --- | --- | | 📄 单文件复制 | 拖动文件到 `run.bat`,在**源文件所在目录**生成带时间戳副本 | | 📁 文件夹复制 | 拖动文件夹到 `run.bat`,在**同级目录**新建带时间戳文件夹并递归复制 | | 🔀 混合拖拽 | 一次可拖多个文件 / 文件夹,逐项处理并汇总结果 | | 🕒 时间属性 | 保留原文件修改时间、创建时间(目录时间也同步) | | 🛡️ 防覆盖 | 同名产物自动加 `(2)(3)…` 后缀,绝不覆盖 | | ✅ 完整性校验 | 复制完成做大小校验,逐项报告成功 / 失败 | --- ## 🚀 使用方式 ### 1. 拖【文件】到 `run.bat` 上 在「源文件所在目录」生成 `原名称_年月日时分秒.后缀`: ```text a.xlsx → a_20260829141832.xlsx ``` ### 2. 拖【文件夹】到 `run.bat` 上 在「该文件夹的同级目录」新建 `原文件夹名_年月日时分秒` 文件夹,并把里面所有内容(含子目录)递归复制进去: ```text D:\报表 → D:\报表_20260829141832\ D:\报表\a.xlsx → D:\报表_20260829141832\a.xlsx ``` > 新文件夹带时间戳,**内部文件默认保持原名、原目录结构**,方便直接使用。 > 若希望内部文件也带时间戳,将源码中 `TIMESTAMP_FILES_IN_FOLDER` 改为 `true` 后重新打包即可。 ### 3. 命令行调用 ```bat run.bat "D:\测试\a.xlsx" "D:\报表" ``` ### 4. 双击 `run.bat`(不带路径) - 若 `DEFAULT_PATHS` 留空 → 仅打印用法; - 若在 `FileCopyTool.java` 的 `DEFAULT_PATHS` 中填好固定路径(文件 / 文件夹均可)→ 双击即复制那些路径。 --- ## 📂 文件夹结构 ```text FileCopyTool-Runtime/ ├── run.bat # 启动脚本(调用目录内 jdk\bin\java.exe 跑 jar) ├── app\ │ └── FileCopyTool.jar # 程序本体 ├── jdk\ # 目录内自带的完整 JDK 17(java.exe / javac.exe 都在) ├── src\com\xjxjin\ │ └── FileCopyTool.java # 源码 └── build\ # 编译中间产物(可删) ``` > `run.bat` 通过 `%~dp0` 指向目录内的 `jdk\bin\java.exe`,因此**不碰系统 JDK**, > 文件夹搬到哪里都能独立运行。 --- ## ⚠️ 重要说明:关于「加密文件」 本程序是**纯字节拷贝**(`FileChannel.transferTo`),不对文件做任何解密。 如果你发现:拖到 `run.bat` 的加密文件,生成的副本「**还是加密的**」—— 那是因为所在电脑的**透明加密驱动**只对你机器上**受信任的 `java` 进程**放行解密, 而本工具自带 `jdk` 里的 `java.exe` **不在其白名单**中 → 读到的就是密文。 **解决方式(任选其一):** - **A.** 用 IDEA / 系统中被信任的 `java` 来跑: ```bat java -jar app\FileCopyTool.jar "路径" ``` - **B.** 请加密软件管理员把本文件夹的 `jdk\bin\java.exe` 加入进程白名单。 反之,若副本是明文,说明当前 `java.exe` 已被放行,可正常使用。 --- ## 🔧 重新打包(修改源码后) 使用目录内自带 JDK,**无需系统 JDK**: ```bat jdk\bin\javac.exe -encoding UTF-8 -d build\classes src\com\xjxjin\FileCopyTool.java jdk\bin\jar.exe --create --file app\FileCopyTool.jar --main-class com.xjxjin.FileCopyTool -C build\classes . ``` --- > 📝 本工具仅做字节级复制,不产生、不消除任何加密内容。 ## jdk目录太大无法上传,需要自行下载JDK17