中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 01:24
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]请教一个文件更新问题,谢谢
可打印版本  809 / 7
第1楼 ttkuaile 发表于 2008-04-11 16:08
新手上路 发帖 4 积分 10
[求助]请教一个文件更新问题,谢谢
我想把E:\soft\下的一个文件usbcleaner*(*表示软件版本号,不确定) 复制到H:\tools\,
如果H:\tools\下存在同名文件则跳过,不覆盖。
如果H:\tools\下存在usbcleaner*(不同名),则删除usbcleaner*,并将E:\soft\下的usbcleaner*复制到此文件夹。



举个例子
E:\soft\下为usbcleaner20080401.zip,H:\tools\下也为usbcleaner20080401.zip
则跳过,不覆盖。

E:\soft\下为usbcleaner20080401.zip,H:\tools\下为usbcleaner20091123.zip,
则删除usbcleaner20091123.zip,并复制usbcleaner20080401.zip到H:\tools\。


十分感谢。
第2楼 chenall 发表于 2008-04-11 16:28
银牌会员 发帖 469 积分 1,276 来自 福建泉州
随便写了一个,未测试,


for %%i in (e:\soft\usbcleaner*.zip) do if not exist h:\tools\%~nxi (del h:\tools\usbcleaner*.*&&copy %%i h:\tools)
第3楼 ttkuaile 发表于 2008-04-11 16:55
新手上路 发帖 4 积分 10

for %%i in (e:\soft\usbcleaner*.zip) do if not exist h:\tools\%~nxi (del h:\tools\usbcleaner*.*&&copy %%i h:\tools)



似乎不行啊,就算存在同名文件,还是会执行复制操作。

命令或许还能更简单点,E:\soft\确定只存在一个usbcleaner*.*文件。
第4楼 moniuming 发表于 2008-04-11 21:25
银牌会员 发帖 574 积分 1,335 来自 广西
第5楼 ttkuaile 发表于 2008-04-12 09:10
新手上路 发帖 4 积分 10
4楼的方法我试过了,还是不行。

我找到一个能解决的,但是看起来好像挺复杂的。



@echo off
set SrcDir=E:\soft
set DstDir=H:\tools
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\usbcleaner*"') do (
if not exist "%DstDir%\%%a" (
del /q "%DstDir%\usbcleaner*"
copy "%SrcDir%\%%a" "%DstDir%\"
)
)


[ Last edited by ttkuaile on 2008-4-12 at 09:11 AM ]
第6楼 bat-zw 发表于 2008-04-12 10:53
金牌会员 发帖 1,276 积分 3,105
楼主说上面的方法能实现,我不敢苟同,按分析照上面的方法在tools文件夹中的usbcleaner*文件只会剩下从soft文件夹中复制过来的最后一个usbcleaner文件(如soft和tools中都只一个usbcleaner文件的当然这种方法能行),我以下的方法是不能删除不同名的文件但能成功复制并做到同名不覆盖。

如soft和tools中都只一个usbcleaner文件可改为:


[ Last edited by zw19750516 on 2008-4-12 at 11:18 AM ]
第7楼 26933062 发表于 2008-04-12 12:27
银牌会员 发帖 879 积分 2,268
2楼代码是可以的,只是匆忙中少写了个百分号。
若是再加上引号就更完善了,可以防止文件名含空格时出错。
分行写,代码显得更整洁。
5楼提供的代码应该也是可以的,其实和2楼的差不多,只是2楼直接用for查找文件,5楼是用dir查找文件。
而6楼的代码似乎?。。。。。。效率更低。。。。。findstr没必要吧?
更正2楼代码如下
:

[ Last edited by 26933062 on 2008-4-12 at 12:36 PM ]
第8楼 ttkuaile 发表于 2008-04-12 21:09
新手上路 发帖 4 积分 10
感谢7楼更正的代码,代码很简洁,效率也很高。


谢谢各位,现在更新U盘上的软件变得简单多了。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023