对比删除更新批处理命令或其他程序脚本如:VBS

2025-04-25 07:31:36
推荐回答(3个)
回答1:

设置源目录和目标
set up=\\更新服务器\d\
set down=d:\
把更新服务器硬盘映射到本机
net use z: %up%
生成文件列表
echo. > up.txt
echo. > down.txt
for /r "z:\" %%i in (*) do echo %%~pnxi >> up.txt
for /r "%down%" %%i in (*) do echo %%~pnxi >> down.txt
对比文件列表删除多余文件
for /f "tokens=*" %%i in (down.txt) do (
find "%%i" up.txt || del /a /f /q "%down%%%i"
)
删除空文件夹
set num=0
for /f "delims=" %%i in ('dir /ad /b /s "%down%"') do (
for /f %%j in ('dir /a "%%i"') do set /a num+=1
if !num! lss 8 attrib -s -h -r -a "%%i" && rd /s /q "%%i"
set num=0
)
更新文件
xcopy /d /e /i /y /c /q /h /r /k "z:\*" "%down%*"
最后的清除
net use z: /delete /y
del /a /f /q up.txt
del /a /f /q down.txt

想必哥们是做网管的...
可能会有用,
我在自己机器上测过,
现在的代码是做整盘比较的,运行起来很慢,如果你有耐心,换一下目标和目录的路径,可以实现单个游戏的更新

你可以先在本机上做测试,找两个文件夹就行
映射一个本机上的目录比如 set\\127.0.0.1\d\gamename
记得要先共享

回答2:

看楼主的问题好像是要解决对比的问题吧?
以下代码是对比a文件夹和b文件夹,将b文件夹有而a文件夹中没有的(即:多余的文件)文件删除.

@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir/b/a-d c:\a\*.*') do set %%i=a
for /f "delims=" %%i in ('dir/b/a-d c:\b\*.*') do (
if not defined %%i del/q "%%i")

回答3:

只能一个一个比。
至少在DOS中没有方法能下一个命令对比一批不同的文件。