Board logo

标题: 请教一个查找匹配字符串的问题?(引申了一下,帮帮忙!) [打印本页]

作者: Jevin     时间: 2006-11-2 10:00    标题: 请教一个查找匹配字符串的问题?(引申了一下,帮帮忙!)

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

[ Last edited by Jevin on 2006-11-5 at 09:10 PM ]
作者: lxmxn     时间: 2006-11-2 10:05

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

作者: Jevin     时间: 2006-11-2 10:20    标题: 再次请教!

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


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

  在哪个文件夹下查找?backup下还是program下?
作者: Jevin     时间: 2006-11-2 10:48


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

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

在backup下查找
谢谢!
作者: namejm     时间: 2006-11-2 11:13
  在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 ]
作者: lxmxn     时间: 2006-11-2 12:25


  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:\
)[/

作者: namejm     时间: 2006-11-3 01:03
  呵呵,不好意思,漏了文件名和扩展名,我修改一下4F的代码。多谢lxmxn提醒。

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

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

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

文件名中都只含有一个点号的,访问服务器端user:administrator Password:111111
再次谢谢各位大侠们!;)
作者: lxmxn     时间: 2006-11-5 07:14

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