中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » IF var ∈(all.txt) & NOT var ∈(except.txt) copy var E:(结案)
作者:
标题: IF var ∈(all.txt) & NOT var ∈(except.txt) copy var E:(结案) 上一主题 | 下一主题
bapala
初级用户





积分 28
发帖 11
注册 2006-7-11
状态 离线
『楼 主』:  IF var ∈(all.txt) & NOT var ∈(except.txt) copy var E:(结案)

如何实现:
(if 目录 存在于 all.txt)并且(目录 不存在于 except.txt) 中 copy 目录及其所有文件到 E:\
看了好久,没有找到相关答案,请高手解惑,谢谢
D:\>type all.txt
ccnaiso
New Oriental Soft
RECYCLER
Solaris
Solaris 9学习指南
System Volume Information

D:\>type except.txt
System Volume Information
Red Hat Enterprise Linux 4
Solaris 10
D:\>

[ Last edited by namejm on 2006-10-11 at 12:42 ]

2006-10-11 11:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 2 楼』:  

代码如下, 请楼主测试:
@echo off
set term=2
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (all.txt) do (
    if "!term!"=="1" echo file:  !file!
    set term=1
    for /f "tokens=*" %%c in (except.txt) do (
        set file=%%i
        if "%%i"=="%%c" set term=2
    )
)
if "!term!"=="1" echo file:  !file!
pause
如果显示的内容符合要求请将echo file: !file!换成xcopy

2006-10-11 11:38
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
bapala
初级用户





积分 28
发帖 11
注册 2006-7-11
状态 离线
『第 3 楼』:  

谢谢pengfei,学了一手,
setlocal enabledelayedexpansion
厉害,我今天有所得,呵呵,谢谢了。
睡觉了,ZZZZZzzzz...
同志们,休息了

2006-10-11 11:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  如果下面的代码能正确显示你想要的内容,请把echo语句改成xcopy语句:
@echo off
for /f "delims=" %%i in ('findstr /v /g:except.txt all.txt') do echo "%%i"
pause




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-11 12:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bapala
初级用户





积分 28
发帖 11
注册 2006-7-11
状态 离线
『第 5 楼』:  

all.txt的最后一项会存在判断错误的危险,谢谢指导。

  Quote:
Originally posted by namejm at 2006-10-11 12:05:
  如果下面的代码能正确显示你想要的内容,请把echo语句改成xcopy语句:
[code]
@echo off
for /f "delims=" %%i in ('findstr /v /g:except.txt all.txt') do ech ...



2006-10-11 12:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by bapala at 2006-10-11 12:16:
all.txt的最后一项会存在判断错误的危险,谢谢指导。

  可能并非最后一项的问题,而是因为findstr查找的只是行内的匹配字符串,而不是查找匹配内容的整行。

[ Last edited by namejm on 2006-10-11 at 12:56 ]



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-11 12:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: