Board logo

标题: [文件操作] [已解决]批处理怎样复制文件到指定目录? [打印本页]

作者: 001011    时间: 2011-9-13 12:51     标题: [已解决]批处理怎样复制文件到指定目录?

G:\MARC\500本MARC数据  这个路径下有几百个 *.ISO 文件   要复制到D:\成品测试\*\meta 目录下
条件是当*=*时  复制
例如:
G:\MARC\500本MARC\09012345.ISO   复制到D:\成品测试\09012345\meta 目录下
因为09012345.ISO 和D:\成品测试\09012345\meta 中的 09012345相同
谢谢啦!
作者: 001011    时间: 2011-9-13 12:54

本帖最后由 001011 于 2011-9-13 13:00 编辑

能自己判断吗
作者: awk    时间: 2011-9-13 12:57

  1. @echo off
  2. start cmd /c "copy G:\MARC\500本MARC数据\09019472.iso D:\成品测试\09019472\meta"
  3. start cmd /c "copy G:\MARC\501本MARC数据\09019490.iso D:\成品测试\09019490\meta"
复制代码

作者: 001011    时间: 2011-9-13 13:03

谢谢楼上的  要是能自己判断就好了 每次要做列表也很慢
作者: wangqi0077    时间: 2011-9-13 15:36

本帖最后由 wangqi0077 于 2011-9-13 15:39 编辑

试下这个看看..不是很会
  1. for %%i in (*.iso) do echo %%i>>tmp.txt
  2. for /f "delims=."  %%j in (tmp.txt) do echo %%j >>tmp2.txt
  3. for /f %%m in (tmp2.txt) do copy %%m.iso D:\成品测试\%%m\meta\%%m.iso
  4. pause
复制代码
把所有ISO文件名写到TMP.TXT里面.然后把.ISO前面的文件名提取出来放到TMP2.TXT里面.然后再一行一行对比复制了..一行就是一个文件名...呵暂时只想到这些.新手.应该是可行的.
作者: 001011    时间: 2011-9-13 15:40

本帖最后由 001011 于 2011-9-13 15:43 编辑

谢谢您
文件名写到tmp.txt里面  但是从哪儿复制呢
脚本里面我没有看到G:\MARC\500本MARC数据   路径呀
作者: wangqi0077    时间: 2011-9-13 15:45

直接把这个批处理就丢到500里面好了.
免得写文件路径麻烦.
如果要复制过去的路径还没有创建的话.可以在倒数第二行加上这个.
for /f %%n in (tmp2.txt) do md D:\成品测试\%%n\meta
作者: wangqi0077    时间: 2011-9-13 15:45

创建完了再复制...也行..我试的就只是几个文件来试的..
作者: 001011    时间: 2011-9-13 15:57

非常OK  谢谢啦  真棒
作者: awk    时间: 2011-9-13 18:43

回复 5# wangqi0077


没必要用临时文件
  1. @echo off
  2. for %%a in ("G:\MARC\500本MARC数据\*.iso") do (
  3.     start cmd /c "copy %%a D:\成品测试\09019472\meta"
  4. )
复制代码

作者: 001011    时间: 2011-9-13 20:19

回复 10# awk
这个不行呀  怎么把500里面的全部复制到一个文件夹里面去了
作者: 001011    时间: 2011-9-13 20:19

回复  wangqi0077


没必要用临时文件
awk 发表于 2011-9-13 18:43



    这个不行呀  怎么把500里面的全部复制到一个文件夹里面去了
作者: awk    时间: 2011-9-13 20:27

回复 11# 001011
  1. @echo off
  2. for %%a in ("G:\MARC\500本MARC数据\*.iso") do (
  3.     start cmd /c "copy %%a D:\成品测试\%%~na\meta"
  4. )
复制代码

作者: 001011    时间: 2011-9-13 21:09

回复  001011
awk 发表于 2011-9-13 20:27



    谢谢啦  这样方便多了  可惜今天不能加分了  明天吧
作者: zaixinxiangnian    时间: 2011-9-14 10:38

这个也可以吧!
  1. set i=G:\MARC\500本MARC数据\*.iso
  2. copy %i% D:\成品测试\%~ni%\meta
  3. pause
复制代码

作者: wangqi0077    时间: 2011-9-14 10:54

%~ni% 这个是什么意思啊.~n这个.
作者: 001011    时间: 2011-9-14 14:16

回复 15# zaixinxiangnian
貌似不行  呵呵
作者: 001011    时间: 2011-9-14 14:16

这个也可以吧!
zaixinxiangnian 发表于 2011-9-14 10:38

貌似不行
作者: Hello123World    时间: 2011-9-14 18:44

  1. @echo off
  2. for /r "G:\MARC\500本MARC" %%i in (*.iso) do copy /y "%%i" "D:\成品测试\%%~ni\meta" 2>nul
  3. pause>nul
复制代码

作者: 001011    时间: 2011-9-14 19:16

Hello123World 发表于 2011-9-14 18:44



    还是版主厉害呀  高效快捷  就是差一个自动退出  谢谢啦
作者: wangqi0077    时间: 2011-9-15 11:30

另外,FOR 变量参照的替换已被增强。您现在可以使用下列
选项语法:

     %~I          - 删除任何引号("),扩展 %I
     %~fI        - 将 %I 扩展到一个完全合格的路径名
     %~dI        - 仅将 %I 扩展到一个驱动器号
     %~pI        - 仅将 %I 扩展到一个路径
     %~nI        - 仅将 %I 扩展到一个文件名
     %~xI        - 仅将 %I 扩展到一个文件扩展名
     %~sI        - 扩展的路径只含有短名
     %~aI        - 将 %I 扩展到文件的文件属性
     %~tI        - 将 %I 扩展到文件的日期/时间
     %~zI        - 将 %I 扩展到文件的大小
     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个完全合格的名称。如果环境变量名
                   未被定义,或者没有找到文件,此组合键会扩展到
                   空字符串
作者: Batcher    时间: 2011-9-15 11:39

回复 15# zaixinxiangnian


你测试过吗?
作者: Batcher    时间: 2011-9-15 11:43

回复 20# 001011


你是不是更改过需求?最开始不是要求并发复制的吗
自动退出?把19楼最后一行代码删掉
作者: 001011    时间: 2011-9-16 12:16

非常感谢  目的达到了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2