中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-02 15:30
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 麻烦高手帮我看下关于文件夹名的比较这个批处琢 tabindex= 查看 1,117 回复 5
楼 主 麻烦高手帮我看下关于文件夹名的比较这个批处琢 tabindex= 发表于 2006-11-30 08:02 ·  中国 广东 广州 联通
初级用户
积分 90
发帖 35
注册 2006-10-23 01:13
19年会员
UID 67781
性别 男
状态 离线
目的:比较log1和log2的2个文件夹的文件,把log1比log2中多出来的文件夹复制到log2中,自己看不出那里有问题,但是运行没有结果



@echo off

dir d:\log1 /ad /b >>1.txt
dir d:\log2 /ad /b >>2.txt

setlocal enabledelayedexpansion
for /f "delims=" %%i in (1.txt) do @echo %%i
findstr "%%i" 2.txt
xcopy d:\log1\%%i d:\log2

[ Last edited by yaoguof on 2006-12-1 at 01:43 AM ]
2 发表于 2006-11-30 08:48 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
19年会员
UID 63387
状态 离线
你的没有判断条件.
@echo off
dir d:\log1 /ad /b >>1.txt
dir d:\log2 /ad /b >>2.txt
for /f "delims=" %%i in (1.txt) do (
echo %%i
findstr /i %%i 2.txt
if errorlevel==1 xcopy d:\log1\%%i d:\log2
)
del 1.txt
del 2.txt
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
yaoguof +1 2006-12-01 01:40
3 发表于 2006-11-30 22:18 ·  中国 广东 广州 联通
初级用户
积分 90
发帖 35
注册 2006-10-23 01:13
19年会员
UID 67781
性别 男
状态 离线
谢谢楼上的回复,
我刚才测试了一下,还是不行,没有把log1中多余的文件复制到log2中,
请问是否是 xcopy d:\log1\%%i d:\log2 中的%%i 引用的有问题呢?
4 发表于 2006-11-30 23:56 ·  中国 上海 奉贤区 电信
初级用户
DOSFans
积分 48
发帖 21
注册 2006-10-22 02:14
19年会员
UID 67619
性别 男
状态 离线
@echo off
cls
dir /a /b d:\log1>>1.txt
dir /a /b d:\log2>>2.txt
for /f "tokens=*" %%i in (1.txt) do (
findstr /i "%%i" d:\2.txt
if errorlevel 1 xcopy d:\log1\"%%i" d:\log2&echo 拷贝成功&goto :eof
)
del 1.txt;2.txt
echo log1中不存在log2中没有的文件
pause 1>nul
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
yaoguof +2 2006-12-01 01:41
批处理:探索你的世界到底有多精彩!
5 发表于 2006-12-01 00:52 ·  中国 广东 广州 联通
初级用户
积分 90
发帖 35
注册 2006-10-23 01:13
19年会员
UID 67781
性别 男
状态 离线
谢谢大家的回复,把后面的goto :eof去掉就可以循环了

不过还是有一个小问题

我用xcopy d:\log1\"%%i" d:\log2 /e 或者xcopy d:\log1\"%%i" d:\log2 /s

都不能把log1中的文件夹拷贝过去,每次都是直接把log1文件夹下的文件全部拷贝到log2的文件夹中,不能把目录拷贝过去

请指点一下,那里出问题了,试了好久都不明白

[ Last edited by yaoguof on 2006-12-1 at 01:46 AM ]
6 发表于 2006-12-01 14:00 ·  中国 上海 奉贤区 电信
初级用户
DOSFans
积分 48
发帖 21
注册 2006-10-22 02:14
19年会员
UID 67619
性别 男
状态 离线
拷贝文件夹的话只需要在xcopy命令后面加参数/s /e就可以了,经测试可行,内容如下:

@echo off
cls
dir /a /b d:\log1>>1.txt
dir /a /b d:\log2>>2.txt
for /f "tokens=*" %%i in (1.txt) do (
findstr /i "%%i" d:\2.txt
if errorlevel 1 xcopy /s /e d:\log1\"%%i" d:\log2&echo 拷贝成功
)
del 1.txt;2.txt
pause 1>nul&goto :eof
批处理:探索你的世界到底有多精彩!
论坛跳转: