中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教一个查找匹配字符串的问题?(引申了一下,帮帮忙!)
作者:
标题: 请教一个查找匹配字符串的问题?(引申了一下,帮帮忙!) 上一主题 | 下一主题
Jevin
初级用户





积分 25
发帖 9
注册 2006-10-31
来自 Hangzhou
状态 离线
『楼 主』:  请教一个查找匹配字符串的问题?(引申了一下,帮帮忙!)

新手一个:)
如何在如D:\program文件夹下查找一个与filename1名称匹配最近的文件,并将它copy到c:\
谢啦!

[ Last edited by Jevin on 2006-11-5 at 09:10 PM ]

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




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


for /f %%a in ('dir /b/a-d/s D:\program\?filename1?.exe') do @copy "%%a" c:\
  大致可以满足需求了,不过不知道楼主要拷贝几个文件。代码没测试。


2006-11-2 10:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Jevin
初级用户





积分 25
发帖 9
注册 2006-10-31
来自 Hangzhou
状态 离线
『第 3 楼』:  再次请教!

谢谢!
不好意思,小弟现在有点变化了:
先根据d:\programr下的一个文件名称(此文件夹下仅有一个文件),去查找F\backup下的文件是否存在,若不存在就查找与之文件名称匹配最近r的,并将它拷贝到d:\

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

batch fan


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



  Quote:
Originally posted by Jevin at 2006-11-2 10:20:
若不存在就查找与之文件名称匹配最近r的...

  在哪个文件夹下查找?backup下还是program下?



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





积分 25
发帖 9
注册 2006-10-31
来自 Hangzhou
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by namejm at 2006-11-2 10:40 AM:

  在哪个文件夹下查找?backup下还是program下?

在backup下查找
谢谢!

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

batch fan


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

  在2F的基础上扩充一下,暂未测试:
@echo off
:: 当文件名中含有多个点号的时候有可能无法准确找到近似的文件
for /f "delims=" %%i in ('dir /a-d /b d:\programr\test.txt') do set name=%%~ni&set postfix=%%~xi
if not exist "F\backup\%name%.%postfix%" (
    for /f "delims=" %%i in ('dir /a-d /b F:\backup^|findstr /n ".*\%name%.*\.%postfix%$"') do copy "%%~dpnxi" d:\
)
[ Last edited by namejm on 2006-11-3 at 01:03 AM ]



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




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by namejm at 2006-11-2 11:13:
  在2F的基础上扩充一下,暂未测试:
@echo off
:: 当文件名中含有多个点号的时候有可能无法准确找到近似的文件
for /f "delims=" %%i in ('dir /a-d /b d:\programr') do set name=%%~ni&set postfix=%%~xi
if not exist "F\backup\%name%.%postfix%" (
    for /f "delims=" %%i in ('dir /a-d /b F:\backup^|findstr /n ".*\%name%.*\.%postfix%$"') do copy "%%~dpnxi" d:\
)


@echo off
:: 当文件名中含有多个点号的时候有可能无法准确找到近似的文件
for /f "delims=" %%i in ('dir /a-d /b d:\programr\filename.exe') do set name=%%~ni&set postfix=%%~xi
if not exist "F\backup\%name%.%postfix%" (
    for /f "delims=" %%i in ('dir /a-d /b F:\backup^|findstr /n ".*\%name%.*\.%postfix%$"') do copy "%%~dpnxi" d:\
)[/


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

batch fan


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

  呵呵,不好意思,漏了文件名和扩展名,我修改一下4F的代码。多谢lxmxn提醒。

————————————————————————————————————————

  今天再看了一下3F的描述,发现似乎不存在漏掉文件名和扩展名的问题,或者说,无须指定文件名和扩展名,因为3F是这样说的:先根据d:\programr下的一个文件名称(此文件夹下仅有一个文件)——此文件夹指的究竟是d:\programr下的文件夹还是指 programr 这个文件夹本身?按照我的理解,我觉得应该是指 programr 文件夹本身,而它下面仅有一个文件,这个时候,不指定文件名和扩展名更具有通用性。

[ Last edited by namejm on 2006-11-4 at 01:09 AM ]



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





积分 25
发帖 9
注册 2006-10-31
来自 Hangzhou
状态 离线
『第 9 楼』:  

呵呵,namejm理解很对,小弟没有表述清楚,见谅!
再次表述一下:先根据d:\program下的一个文件名称(program文件夹下仅有一个filename.exe执行文件),去查找服务器端(210.15.15.1)共享文件夹backup下的这个文件是否存在,若存在就直接运行d:\program下的这个exe文件,若不存在就查找与该文件名称匹配最近的那个文件,并将它拷贝到d:\program文件夹下面,同时删除旧的执行文件,运行这个新的执行文件.

文件名中都只含有一个点号的,访问服务器端user:administrator Password:111111
再次谢谢各位大侠们!;)

2006-11-4 23:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 10 楼』:  


  呵呵,看来 namejm 兄还蛮仔细的,3F的这点小"漏洞"都看出来了~~不过为了正确性,最好还是加上扩展名为好~~


2006-11-5 07:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: