标题: [文件操作] 批处理遍历两个文件夹获修改时间不一样的同名文件问题 [打印本页]
作者: miaomiao 时间: 2015-11-3 11:13 标题: 批处理遍历两个文件夹获修改时间不一样的同名文件问题
- @echo off&color f1
- set d1=F:\share
- set d2=D:\test
- set d3=D:\test2
- set d4=D:\test3
- cd/d "%d1%"
- for /f "delims=" %%i in ('dir/s/b/a ')do (
- if not exist "%d2%\%%i" (copy "%%i" "%d4%")else (
- for /f "delims=" %%j in ('dir/s/b/a "%d2%\%%i"')do (
- if %%~ti NEQ %%~tj copy/y "%d2%\%%i" "%d3%"
- )
- ))
- pause
复制代码
if %%~ti NEQ %%~tj copy/y "%d2%\%%i" "%d3%"其中这一句好像没有执行到,这里有什么问题吗。求大神
作者: CrLf 时间: 2015-11-3 15:44
你忘了 %%i 的值都是完整路径,所以组合的 D:\test\F:\share 是非法路径
顺便改进下- @echo off&color f1
- set d1=F:\share
- set d2=D:\test
- set d3=D:\test2
- set d4=D:\test3
- cd/d "%d1%"
- for /f "delims=" %%i in ('findstr /sm .*')do (
- if not exist "%d2%\%%i" (copy "%%i" "%d4%")else (
- for %%j in ("%d2%\%%i")do (
- if %%~ti NEQ %%~tj copy/y "%d2%\%%i" "%d3%"
- )
- ))
- pause
复制代码
作者: miaomiao 时间: 2015-11-5 14:05
你忘了 %%i 的值都是完整路径,所以组合的 D:\test\F:\share 是非法路径
顺便改进下
CrLf 发表于 2015-11-3 15:44
这样也不行啊- -点击好像没反应,这个问题困扰我好久
作者: miaomiao 时间: 2015-11-5 14:11
回复 2# CrLf
巡查大人,其实我是是想实现这样的功能的,A文件夹中有文件也有文件夹(有文件),想把A文件夹每天备份至B文件夹,结构一样,然后每天增量备份。其实这个用xcopy就能轻松实现了,但是现在又要求说,在增量备份时有些文件可能被修改了,所以要在覆盖前,将B中的该文件先备份至C文件夹(结构保存一致),其实也就是实现了,不管怎么样,增量备份后,每一份修改过的文件都必须保持着更改前跟更改后。。。我是做.NET开发的,这个真的难倒我了,客户要求用bat写 :Q ,求助啊
作者: miaomiao 时间: 2015-11-5 15:18
回复 2# CrLf
现在实现了文件夹下同名文件修改过后的文件先保存到其他地方,但是文件夹下的文件夹的文件就出错。。。- @echo off
- for /r d:\test %%i in (*) do (
- echo %%~nxi
- for /r F:\share %%a in (*) do (echo %%~nxa
- if %%~nxi == %%~nxa (
- (if %%~ta NEQ %%~ti ( copy %%i "D:\test2" /y/d ) )
- )
- )
- )
- pause
复制代码
作者: terse 时间: 2015-11-5 18:51
这样呢?- @echo off&setlocal enabledelayedexpansion
- set d1=F:\share
- set d2=D:\test
- set d3=D:\test2
- set d4=D:\test3
- cd/d "%d1%"
- for /f "delims=" %%i in ('dir/s/b/a')do (
- set "str=%%i"
- if exist "%d2%!str:*%d1%=!" (
- for /f "delims=" %%j in ("%d2%!str:*%d1%=!")do (
- if "%%~ti" neq "%%~tj" copy/y "%d2%!str:*%d1%=!" "%d3%"
- )
- ) else copy "%%i" "%d4%"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |