Board logo

标题: 文件批量移动复制批处理 [打印本页]

作者: cnndmm     时间: 2008-3-17 12:11    标题: 文件批量移动复制批处理

请论坛各位大大帮忙..本人想做一格批量复制移动文件的批处理..但有个问题没弄懂..如何才能在执行的时候,自动跳过已有的文件.而不是替换..
作者: moniuming     时间: 2008-3-17 12:57
先判断目标文件夹里是否有文件再进行复制
作者: SpikeKnox     时间: 2008-3-17 12:59    标题: 用vbs脚本解决比较方便

Dim fso
Set fso = CreateObject("scripting.filesystemobject")

On Error Resume Next
'copy c:\test\*.* 到 d:\ 目录下,不覆盖
fso.CopyFile "c:\test\*.*","d:\",False

PS:没考虑要Copy子目录的情况
作者: cnndmm     时间: 2008-3-17 13:30
小弟是个大菜菜...新学的..你们写的都看不懂..
  能不能提供一个完整的文件给我?
       还有 2楼说的先写个判断语句..那个语句怎么写?我所有的文件都是同一种格式的..都在根目录..
作者: HAT     时间: 2008-3-17 15:15

@echo off
set SrcDir=C:\test\1
set DstDir=C:\test\2
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.*"') do (
  if not exist "%DstDir%\%%a" (
    copy "%SrcDir%\%%a" "%DstDir%"
  )
)

作者: cnndmm     时间: 2008-3-17 16:37
楼上的高手..感谢你的程序..
   我还有个问题要请教..你这个批处理能处理指定目录的复制..但如果我要指定复制N个不同名字的文件(以编号为文件名)到任意的盘符里去..碰上同样编号就跳过不复制.又要如何处理呢?  
copy 30001.* f:
copy 30008.* f:
copy 30009.* f:
copy 30036.* f:
copy 30039.* f:
copy 30047.* f:
copy 30052.* f:
copy 30093.* f:
copy 30094.* f:
copy 30108.* f:
copy 30136.* f:
copy 30138.* f:
copy 30139.* f:
copy 30146.* f:
copy 30190.* f:
copy 30193.* f:
copy 30210.* f:
copy 30245.* f:
copy 30073.* f:
copy 30111.* f:
copy 30112.* f:
copy 30113.* f:
copy 30125.* f:
copy 30130.* f:
作者: cnndmm     时间: 2008-3-17 17:42
哪位大大帮忙写一下..衷心的感谢了..
作者: moniuming     时间: 2008-3-17 20:06
将5楼的代码稍作更改即可(复制到根目录):
@echo off
set SrcDir=C:\test\1
for %%i in (c d e f) do (
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.*"') do (
  if not exist "%%i:\%%a" (
    copy "%SrcDir%\%%a" "%%i:\"
   )
  )
)

作者: cnndmm     时间: 2008-3-18 14:18
楼上的大大。。你这个还是从目录复制的。
  我想要的是复制根目录下的N个文件。能不能这样考虑。。批处理读取文本文件里的内容。。内容为:
30001.*
30008.*
30009.*
30036.*
30039.*
30047.*
30052.*
30093.*
30094.*
30108.*
30136.*
30138.*
30139.*
然后把这些文件复制到指定的盘符里去,中途如果碰上相同的文件。则不提示自动跳过。。
作者: cnndmm     时间: 2008-3-19 12:17
顶一下..希望有高手帮忙..