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

[文本处理] 自动备份文件夹批处理为何报错?

abcdefg是在D:/www文件夹里面我要备份到d:/beifen/wangzhan文件夹里面:
所以日期是在压缩的时候,现在一个文件夹,例如:20121202文件夹
就是代表今天是2012年12月2日,创建这个文件夹,然后把D:/www/ABCDEFG文件夹的压缩文件自动备份到D:/beifen/wangzhan/20121202文件夹里面ABCDEFG7个压缩包
到了明天就是21021203文件夹里面。ABCDEFG7个压缩包。

另外我的rar文件在:C:\Program Files\winrar\winrar.exe
这个怎么实现。。


我一个朋友帮我弄的:
  1. @echo off
  2. set "source=d:\www"
  3. set "dst=d:\beifen\wangzhan"
  4. pushd "%source%"
  5. for /f "delims=" %%i in ('dir /ad /b') do (
  6. for /f %%j in ('tad $Y$0m$0d$0H$0n') do (
  7. set day=%%j
  8. call set day=%%day:~0,8%%
  9. call md "%dst%\%%day%%" 2>nul
  10. call rar a "%dst%\%%day%%\%%i_%%j.rar" "%%i"
  11. )
  12. )
  13. pause
复制代码
但是执行提示tad不是内部命令,怎么处理。

另外woderar的地址是:C:\Program Files\winrar\winrar.exe

大家帮我看看。

去下载一个tad吧
http://tad.adoxa.cjb.net/

TOP

本帖最后由 学习ing 于 2012-12-11 15:14 编辑

不需要用外部命令就可以简单实现的
  1. @echo off
  2. set source=D:\www
  3. set dst=D:\beifen\wangzhan
  4. set today=%date:~0,4%%date:~5,2%%date:~8,2%
  5. md "%dst%\%today%"
  6. for /f "delims=" %%i in ('dir "%source%" /ad /b') do ("C:\Program Files\winrar\rar.exe" a -ep1 -id[c] "%dst%\%today%\%%i.rar" "%source%\%%i")
复制代码

TOP

本帖最后由 冰淇淋小子 于 2013-8-22 14:56 编辑

@echo off
set "source=d:\wwwroot"
set "dst=d:\beifen\wangzhan"
pushd "%source%"
for /f "delims=" %%i in ('dir /ad /b') do (
for /f %%j in ('tad $Y$0m$0d$0H$0n') do (
set day=%%j
call set day=%%day:~0,8%%
call md "%dst%\%%day%%" 2>nul
call rar a "%dst%\%%day%%\%%i_%%j.rar" "%%i"
)
)

现在我的目录改变了d:\wwwroot,但是这里面的文件夹变为了
d:\wwwroot\q\wwwroot.
d:\wwwroot\q\log
d:\wwwroot\q\site
d:\wwwroot\a\wwwroot.
d:\wwwroot\a\log
d:\wwwroot\a\site

我现在只要备份含有wwwroot的文件夹,其他的文件夹都不备份,怎么处理。谢谢

TOP

回复 4# 冰淇淋小子
  1. @echo off
  2. set "source=d:\wwwroot"
  3. set "dst=d:\beifen\wangzhan"
  4. pushd "%source%"
  5. for /f "delims=" %%i in ('dir /ad /b ^| findstr "wwwroot"') do (
  6.     for /f %%j in ('tad $Y$0m$0d$0H$0n') do (
  7.         set day=%%j
  8.         call set day=%%day:~0,8%%
  9.         call md "%dst%\%%day%%" 2>nul
  10.         call rar a "%dst%\%%day%%\%%i_%%j.rar" "%%i"
  11.     )
  12. )
复制代码

TOP

提示无法创建 d:\beifen\wangzhan\20130822\d:\wwwroot\q\wwwroot\c\qcscd_201
21649.rar
文件名、目录名或卷标语法不正确。
RAR 4.00 版权所有 (c) 1993-2011 Alexander Roshal 2 Mar 2011
注册给 Federal Agency for Education

无法创建 d:\beifen\wangzhan\20130822\d:\wwwroot\q\wwwroot\c\qcscdk_20
221649.rar
文件名、目录名或卷标语法不正确。
RAR 4.00 版权所有 (c) 1993-2011 Alexander Roshal 2 Mar 2011
注册给 Federal Agency for Education

TOP

我的目的是在d:\wwwroot\q
d:\wwwroot\q1
d:\wwwroot\q2
d:\wwwroot\q3
查找到q1/q2/q3下面的wwwroot目录,并且打包压缩,然后按照系统当前日期创建到d:\beifen\wangzhan这个目录创建压缩包

TOP

最后的结果是:D:\beifen\wangzhan\20130822\q_201308231722rar

TOP

这里 Q1 Q2 Q3 是否要另行创建文件夹呢
  1. @echo off
  2. set source=D:\wwwroot
  3. set dst=D:\beifen\wangzhan
  4. set RarPath="C:\Progra~1\WinRAR\Rar.exe"
  5. set ymd=%date:~,4%%date:~5,2%%date:~8,2%
  6. md "%dst%\%ymd%" 2>nul
  7. for /f "delims=" %%i in ('dir /ad /b /s "%source%"^|findstr /ie "\\wwwroot"') do (
  8.     %RarPath% A "%dst%\%ymd%\%%~ni.rar" "%%i"
  9. )
  10. pause
复制代码

TOP

谢谢。弄好了。

TOP

返回列表