关于文件替换的批处理,想了很久,想不出来,有点难,帮我!

来源:百度知道 编辑:UC知道 时间:2024/06/04 23:03:18
在同一级目录下,有两个文件夹,分别叫“原始”和“使用”,每个文件夹下面都有文件和子文件夹,子文件夹下还有子文件。

要求:
如果“使用”下的文件在“原始”下有同名,则不做处理;如果此文件不存在“原始”下面,则删除它。

实例:
1、文件:.\使用\A.txt;文件:.\原始\A.txt,则不做处理
2、文件:.\使用\A.txt;文件:.\原始\111\A.txt,而无文件:.\原始\A.txt,则删了文件:.\使用\A.txt
3、文件夹:.\使用\A;无文件夹:.\原始\A;则删了整个文件夹:.\使用\A
4、文件夹:.\使用\A;有文件夹:.\原始\A,则对他们的下一级再进行判断。

@echo off
::功能:实现两个目录文件和目录的替换,少不补,多的就删除

::--------------手动赋值
set ss=C:\Documents and Settings\wu\桌面\pzl\原始
set dd=C:\Documents and Settings\wu\桌面\pzl\使用
::---------------------
color F2
setlocal enabledelayedexpansion
::-----------设置路径
set drive=%dd:~0,2%
cd %dd%
%drive%
cd..
::---------------------------删文件和目录

del 运行结果.txt 2>nul
echo 删除了目的文件夹下哪些文件和目录:>运行结果.txt

dir "%ss%" /s /b>原始.txt
dir "%dd%" /s /b>使用.txt

for /f "delims=" %%i in (使用.txt) do (
set sdir=%%i
set tdir=%%i
set sdir=!sdir:%dd%=%ss%!
if not exist "!sdir!" (
echo !tdir!>>运行结果.txt
del /f /q "!tdir!" 2>nul
)
)

::----------有可能目录删不全,再删一次
for /f "delims=" %%i in ('dir /s/b/ad "%dd%" ^| sort /r') do rd /q "%%i&qu