[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何批处理(bat),rar打包当前目录下的指定文件,打包名字可以自定义加文件修改日期

本帖最后由 oyr520 于 2021-11-28 17:19 编辑

使用批处理(bat),rar打包当前目录下的指定文件,打包名字可以自定义加文件修改日期,然后在当前目录下创建user_rar文件夹存放(如果不存在则创建),谢谢解答。

比如:当前目录下有aaa.txt,bbbb.txt,ccccc.txt,ddddd.bin,这些文件修改日期是2021/11/28 11:50,运行批处理后打包这四个txt,打包的名称是DSFC_DSNB_20211128_1150.rar,然后在当前目录下创建user_rar 存放。

回复 2# flashercs
感谢大佬,我测试后能生成文件夹,但文件夹里面没有rar压缩包,请帮忙再看看,谢谢!
我在C盘目录下测试的(固态硬盘没有做分区)

TOP

尝试改为rar所在的路径也是没有rar压缩包
@echo off
setlocal EnableDelayedExpansion
Rar = "C:\Program Files\WinRAR\WinRAR.exe"
cd /d "%~dp0"
set files="2.txt" "cd.txt" "stdout.txt" "stderr.txt"
2>nul md user_rar
for %%A in (%files%) do (
  set "t=%%~tA"
  set "t=!t:-=!"
  set "t=!t:/=!"
  set "t=!t::=!"
  set "t=!t: =_!"
  goto break
)
:break
Rar a "user_rar\DSFC_DSNB_!t!.rar" %files%
endlocal

TOP

rar.exe修改所在的路径就可以了"C:\Program Files\WinRAR\WinRAR.exe" a

TOP

优化一下,把rar路径定义成变量调用
@echo off
setlocal EnableDelayedExpansion
cd /d "%~dp0"
set rar="C:\Program Files\WinRAR\WinRAR.exe"
set files="2.txt" "cd.txt" "stdout.txt" "stderr.txt"
2>nul md user_rar
for %%A in (%files%) do (
  set "t=%%~tA"
  set "t=!t:-=!"
  set "t=!t:/=!"
  set "t=!t::=!"
  set "t=!t: =_!"
  goto break
)
:break
%rar% a  -s "user_rar\DSFC_DSNB_!t!.rar" %files%
endlocal

TOP

回复 6# Batcher
我也不太懂怎么处理,目前我的文件都是相同的

TOP

回复 2# flashercs
感谢大佬,如果想要读取com.h文件中#define VERSION_NUMBER     "S V1.01",字符串S V1.01也当成压缩包名称怎么实现呢?
#define VERSION_NUMBER在.h中的行数不是固定的,VERSION_NUMBER 跟字符串之间的空格可能也会变化,include\com.h 文件路径是相对不变的。

也就是压缩包名称从a  -s "user_rar\DSFC_DSNB_!t!.rar" %files% 变为这样a  -s "user_rar\DSFC_DSNB_S V1.01_!t!.rar" %files%

TOP

回复 10# flashercs
打包后是这样DSFC_DSNB__20211129_1017.rar,麻烦帮忙看看是什么原因导致的,谢谢!

以下com.h下载链接,如果需要:
https://we.tl/t-QgGy46LeTY

TOP

回复 12# flashercs
修改后,运行会提示无法打开(如下),然后user_rar文件夹是空的没有生成xxx.rar文件,烦请在帮忙看看,谢谢!

D:\test\user_rar\DSFC_DSNB_21102101.rar: 无法打开 _20211129_1921.rar 2.txt cd.txt stdout.txt stderr.txt
!   系统找不到指定的文件。

TOP

回复 14# flashercs
我明白前面说的意思了 “后面不能有空格
c语言代码里 用空格替代tab”
验证可以了,谢谢大佬
我发现com.h里面有多个#define VERSION_NUMBER        "21102101",只会识别最后一个,但想识别的是下面这个,不知道能实现嘛
#elif (CUSTOMER_BOARD_TYPE == CUSTOMER_ZY_SP10)
#define MODE_NAME "ZY_SP10"
#define MODEL MODEL0
#define VERSION_NUMBER        "S V1.01" //想识别到这个

因为前面宏定义的是
#define CUSTOMER_SUN_SP10                0
#define CUSTOMER_SUN_SP30                1
#define CUSTOMER_ZY_SP10                2 //选的是这个


#define CUSTOMER_BOARD_TYPE CUSTOMER_ZY_SP10 //宏定义有效的是这个#define CUSTOMER_ZY_SP10                2

TOP

回复 16# flashercs
非常满意,头像支付宝二维码有效吗?想给个小小红包感谢大佬

TOP

返回列表