无忧启动论坛
标题: DOS批处理文件,用于文件的批量复制 。 [打印本页]
作者: 2011gongzi 时间: 2011-4-4 11:57
标题: DOS批处理文件,用于文件的批量复制 。
拜托了
要求如下:
1.搜索固定格式的文件 如:*.txt *.exe等。
2.可以同时完成搜索 *.exe 和*.txt的类似动作。
3.对搜索到的文件进行复制进c:\1文件夹中且不能重名
作者: x9tian 时间: 2011-4-4 16:25
要求还真多呀, 试试这个看看
- @echo off
- md c:\1 2>nul
- cd.>file.txt
- for /f "delims=" %%i in (
- 'mountvol^|find ":"'
- ) do (
- dir /a-d/b/s %%i*.txt %%i*.exe>>file.txt
- )
- for /f "delims=" %%i in (file.txt) do (
-
- if not exist "c:\1\%%~nxi" (
- echo.复制%%i © "%%i" c:\1\
- ) else (
- if not exist "c:\1\%%~ni1%%~xi" (
- echo.复制%%i © "%%i" "c:\1\%%~ni1%%~xi"
- ) else (
- echo.复制%%i © "%%i" "c:\1\%%~ni2%%~xi "
- ))
-
- )
复制代码
作者: 2011gongzi 时间: 2011-4-4 20:31
标题: 回复 #2 x9tian 的帖子
谢谢您了 我看了代码 很好用
十分感谢您的指导
但是重命名方面 我会自己完善 谢谢了!
作者: x9tian 时间: 2011-4-4 22:52
原帖由 2011gongzi 于 2011-4-4 20:31 发表 
谢谢您了 我看了代码 很好用
十分感谢您的指导
但是重命名方面 我会自己完善 谢谢了!
引用, 你难道还有四个重复的文件??
我不是重命名,用IF 定义了两次, 可以处理三个重复的文件吗?
如果还那样, 我建议你用变量来定义, 用 IF not defined 来处理, 重复的,
COPY .bAK 来处理文件, 如果多次重复就再多加个.BAK 原后再, 处理目录下的的文件
按 .BAK 多少来处理文件名
这样N个都不怕了
作者: haiou327 时间: 2011-4-5 00:17
试试这样不用再考虑有重名文件
@echo off
set Fn=%date%%Time%
set Fn=__%Fn::=:%
if not exist c:\1 md c:\1
cd.>file.txt
for /f "delims=" %%i in (
'mountvol^|find ":\"'
) do (
dir /a-d/b/s %%i*.txt %%i*.exe>>file.txt
)
for /f "delims=" %%i in (file.txt) do (
if not exist "c:\1\%%~nxi" (
echo.复制%%i &Copy "%%i" c:\1\
) else (
echo.复制%%i &Copy "%%i" "c:\1\%%~ni%Fn%%%~xi"
)
)
作者: 2011gongzi 时间: 2011-4-5 09:39
标题: 回复 #4 x9tian 的帖子
多谢您的指点 O(∩_∩)O哈!
我快完成了~~
谢谢了
作者: 2011gongzi 时间: 2011-4-5 09:41
标题: 回复 #5 haiou327 的帖子
弱弱的说一句 您给的程序 依然不能消除 重名的问题
但是 我已经完成了 对您给予的帮助 十分感谢~~!!!
谢谢了!!!
作者: 2011gongzi 时间: 2011-4-5 11:46
标题: 回复 #2 x9tian 的帖子
大哥 这句我不会用
for /f "delims=" %%i in (
'mountvol^|find ":\"'
)
要是想把它改成 指定盘符的怎么改?
我是说 只改这一句~~
作者: x9tian 时间: 2011-4-5 12:26
标题: 回复 #5 haiou327 的帖子
哈哈, 也是, 用时间来处理还是蛮好的,
条条大道通罗马呀 ,,,
作者: x9tian 时间: 2011-4-5 12:33
原帖由 2011gongzi 于 2011-4-5 11:46 发表 
大哥 这句我不会用
for /f "delims=" %%i in (
'mountvol^|find ":\"'
)
要是想把它改成 指定盘符的怎么改?
我是说 只改这一句~~
for /f 结构, 是处理, 文本, 命令, 专用的.
如果改成指定盘符的话,
直截for %%i in (
c: d: e:
)
其实我明白你胸中的想法,
你意思是说: " 我直截用命令查找我想找的文件夹, 或分区的目录.
[code]
for /f "delims=" %%i in (
'dir /a-d /b/s c:\*.txt c:\*.exe d:\我这个文件夹\*.txt'
) do (
copy /y "%%i" c:\1\
)
须要注意的是, dir 命令 支持同时处理,多个文件夹, 但不要超个十个, 不然是无法运行的.
作者: 2011gongzi 时间: 2011-4-5 13:10
标题: 回复 #10 x9tian 的帖子
您真是 太细心了 我都想感谢的亲你了~~~
O(∩_∩)O哈!
作者: x9tian 时间: 2011-4-5 13:34
羞(# ̄▽ ̄#)
过奖.
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) |
Powered by Discuz! X3.3 |