无忧启动论坛

标题: 求一个批处理 [打印本页]

作者: 111228    时间: 2024-5-20 08:39
标题: 求一个批处理
要求:拷贝本目录下的多个文件夹和文件(以及本目录下指定子文件夹和子文件夹下的指定文件)并压缩。恳请高手出手,先谢谢了。

作者: reninhouse    时间: 2024-5-20 09:33
等高手来
作者: 111228    时间: 2024-5-20 09:44
多年前第三方火狐浏览器备份配置的一个批处理就是这个,可惜找不到了,百度不到,在此求批处理。
作者: greatphish    时间: 2024-5-20 09:46
本帖最后由 greatphish 于 2024-5-20 09:54 编辑

(假定你安装了7z),然后
7z a -r -mx9 -y abc .  
以上是压缩当前目录及其子目录所有文件和文件夹,其中abc是最后生成的压缩包名字 上面最后abc之后有个空格和点 " ." 不要漏掉
默认是.7z格式,如果需要其他格式可以在 -y后空格,加-t开关,比如-tzip,(目前好像不支持rar,要rar用winrar的命令行,大同小异)

作者: greatphish    时间: 2024-5-20 09:52
本帖最后由 greatphish 于 2024-5-20 10:00 编辑

7z a -r -mx9 -y -i@1.txt abc
这个是指定文件,所有的指定文件和文件夹名写在1.txt里,一行一个,像这样
abc.doc
aaa.txt
dir111
dirabc
回复楼下(因为有发帖时间间隔,投机取巧一下)
直接打包了呀,你一定要复制的话可以
方法a: 前面加一个xcopy命令
方法b:上面的压缩包abc前上绝对路径比如d:\aaa\abc,压缩完后 7z x -y -od:\aaa d:\aaa\abc.7z 解压,(我觉得这更方便),


作者: nttwqz    时间: 2024-5-20 09:53
这是先复制到别处,再打包到别处?
作者: 111228    时间: 2024-5-20 10:23
greatphish 发表于 2024-5-20 09:52
7z a -r -mx9 -y -i@1.txt abc
这个是指定文件,所有的指定文件和文件夹名写在1.txt里,一行一个,像这样
...

做不出来啊,能否按照此例给一个成品出来?
作者: maisifu    时间: 2024-5-20 10:50
学习。。。
作者: sunshinezero    时间: 2024-5-20 13:22
学习一下 ing
作者: kkkssc    时间: 2024-5-20 15:53
不用复制那么麻烦,只要2句,以常用的rar为例:
set rar="C:\Program Files\WinRAR\RAR.exe"
%rar% a -ep1 "创建的压缩包名称及路径.rar" "目录1" "目录2" "目录2" ...
或者你可以将目录写成一张列表,则第二行变成:%rar% a -ep1 "创建的压缩包名称及路径.rar" @列表.txt
作者: holley2008    时间: 2024-5-20 16:52
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. :: 设置当前目录的路径
  4. set "NowPath=%CD%"
  5. :: 设置目标路径用于存放要压缩的文件和文件夹
  6. set "TargetPath=%NowPath%\new\temp_backup"
  7. if not exist "%TargetPath%" mkdir "%TargetPath%"

  8. :: 这里列出你想复制的文件夹和文件,确保路径是相对于NowPath的
  9. set "Copy_items=u\ test111.bat test111\xxx.bat test111\pcsofts.txt test111\web\ 3\up_down\down"

  10. for %%i in (%Copy_items%) do (
  11.     if exist "%%i" (
  12.         set "FullPath=%%~fi"
  13.         set "RelativePath=%%i"
  14.         if exist "%%i" (
  15.             mkdir "%TargetPath%\!RelativePath!" 2>nul
  16.             xcopy "%%i" "%TargetPath%\!RelativePath!" /I /E /Y
  17.         ) else (
  18.             set "RelativeDir=!RelativePath:%%~nxi=!"
  19.             mkdir "%TargetPath%\!RelativeDir!" 2>nul
  20.             copy "%%i" "%TargetPath%\!RelativeDir!\%%~nxi"
  21.         )
  22.     ) else (
  23.         echo 提示: "%%i" 未找到.
  24.     )
  25. )

  26. :: 设置压缩文件的名称和路径
  27. set "ZipFile=%SourcePath%\backup.zip"

  28. :: 设置7-Zip的完整路径
  29. set "ZipPath=C:\Program Files\7-Zip\7z.exe"

  30. :: 使用7-Zip压缩目标路径中的内容
  31. "%ZipPath%" a -r -tzip "%ZipFile%" "%TargetPath%\*" -mx=9 -y

  32. :: 检查压缩命令是否成功执行
  33. if %ERRORLEVEL% EQU 0 (
  34.     echo 操作成功!
  35. ) else (
  36.     echo 操作失败, 请检查!
  37. )

  38. :: 删除目标路径(取消注释下面一行以启用删除)
  39. :: rd /s /q "%TargetPath%"

  40. endlocal
  41. pause
复制代码

作者: nathan6498    时间: 2024-5-20 17:25
谢谢分享
作者: 111228    时间: 2024-5-20 22:18
holley2008 发表于 2024-5-20 16:52

感谢提供。
作者: ak47wa    时间: 2024-5-28 13:14

Tankas you very  much




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3