无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5438|回复: 11
打印 上一主题 下一主题

DOS批处理文件,用于文件的批量复制 。

[复制链接]
跳转到指定楼层
1#
发表于 2011-4-4 11:57:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
拜托了
要求如下:
1.搜索固定格式的文件 如:*.txt *.exe等。
2.可以同时完成搜索 *.exe 和*.txt的类似动作。
3.对搜索到的文件进行复制进c:\1文件夹中且不能重名
2#
发表于 2011-4-4 16:25:52 | 只看该作者
要求还真多呀,   试试这个看看

  1. @echo off
  2. md c:\1 2>nul
  3. cd.>file.txt
  4. for /f "delims=" %%i in (
  5.         'mountvol^|find ":"'
  6.         ) do (
  7.                 dir /a-d/b/s %%i*.txt %%i*.exe>>file.txt
  8.         )
  9. for /f "delims=" %%i  in (file.txt) do (
  10.        
  11.         if not exist "c:\1\%%~nxi" (
  12.                         echo.复制%%i &copy "%%i" c:\1\
  13.                         ) else (
  14.                                 if not exist "c:\1\%%~ni1%%~xi"  (
  15.                                         echo.复制%%i &copy "%%i" "c:\1\%%~ni1%%~xi"
  16.                                                 ) else (
  17.                                                         echo.复制%%i &copy "%%i" "c:\1\%%~ni2%%~xi "
  18.                                                 ))
  19.        
  20.         )
复制代码
回复

使用道具 举报

3#
 楼主| 发表于 2011-4-4 20:31:44 | 只看该作者

回复 #2 x9tian 的帖子

谢谢您了 我看了代码 很好用
十分感谢您的指导
但是重命名方面 我会自己完善 谢谢了!
回复

使用道具 举报

4#
发表于 2011-4-4 22:52:27 | 只看该作者
原帖由 2011gongzi 于 2011-4-4 20:31 发表
谢谢您了 我看了代码 很好用
十分感谢您的指导
但是重命名方面 我会自己完善 谢谢了!



   引用, 你难道还有四个重复的文件??


  我不是重命名,用IF  定义了两次, 可以处理三个重复的文件吗?

  如果还那样, 我建议你用变量来定义,  用 IF  not  defined    来处理, 重复的,
COPY  .bAK 来处理文件, 如果多次重复就再多加个.BAK 原后再, 处理目录下的的文件
按 .BAK   多少来处理文件名



这样N个都不怕了
回复

使用道具 举报

5#
发表于 2011-4-5 00:17:54 | 只看该作者
试试这样不用再考虑有重名文件

@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"
        )
     )         
回复

使用道具 举报

6#
 楼主| 发表于 2011-4-5 09:39:11 | 只看该作者

回复 #4 x9tian 的帖子

多谢您的指点 O(∩_∩)O哈!
我快完成了~~
谢谢了
回复

使用道具 举报

7#
 楼主| 发表于 2011-4-5 09:41:27 | 只看该作者

回复 #5 haiou327 的帖子

弱弱的说一句 您给的程序 依然不能消除 重名的问题
但是 我已经完成了 对您给予的帮助 十分感谢~~!!!
谢谢了!!!
回复

使用道具 举报

8#
 楼主| 发表于 2011-4-5 11:46:28 | 只看该作者

回复 #2 x9tian 的帖子

大哥 这句我不会用
for /f "delims=" %%i in (
        'mountvol^|find ":\"'
        )
要是想把它改成 指定盘符的怎么改?
我是说 只改这一句~~
回复

使用道具 举报

9#
发表于 2011-4-5 12:26:29 | 只看该作者

回复 #5 haiou327 的帖子

哈哈, 也是, 用时间来处理还是蛮好的,

   条条大道通罗马呀  ,,,
回复

使用道具 举报

10#
发表于 2011-4-5 12:33:15 | 只看该作者
原帖由 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 命令 支持同时处理,多个文件夹,  但不要超个十个, 不然是无法运行的.   
回复

使用道具 举报

11#
 楼主| 发表于 2011-4-5 13:10:29 | 只看该作者

回复 #10 x9tian 的帖子

您真是 太细心了 我都想感谢的亲你了~~~
O(∩_∩)O哈!
回复

使用道具 举报

12#
发表于 2011-4-5 13:34:17 | 只看该作者
羞(# ̄▽ ̄#)

  过奖.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-24 04:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表