标题: [文件操作] [已解决]批处理怎样复制文件到指定目录? [打印本页]
作者: 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
- @echo off
- start cmd /c "copy G:\MARC\500本MARC数据\09019472.iso D:\成品测试\09019472\meta"
- 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 编辑
试下这个看看..不是很会- for %%i in (*.iso) do echo %%i>>tmp.txt
- for /f "delims=." %%j in (tmp.txt) do echo %%j >>tmp2.txt
- for /f %%m in (tmp2.txt) do copy %%m.iso D:\成品测试\%%m\meta\%%m.iso
- 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
没必要用临时文件- @echo off
- for %%a in ("G:\MARC\500本MARC数据\*.iso") do (
- start cmd /c "copy %%a D:\成品测试\09019472\meta"
- )
复制代码
作者: 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 - @echo off
- for %%a in ("G:\MARC\500本MARC数据\*.iso") do (
- start cmd /c "copy %%a D:\成品测试\%%~na\meta"
- )
复制代码
作者: 001011 时间: 2011-9-13 21:09
回复 001011
awk 发表于 2011-9-13 20:27
谢谢啦 这样方便多了 可惜今天不能加分了 明天吧
作者: zaixinxiangnian 时间: 2011-9-14 10:38
这个也可以吧!- set i=G:\MARC\500本MARC数据\*.iso
- copy %i% D:\成品测试\%~ni%\meta
- 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
- @echo off
- for /r "G:\MARC\500本MARC" %%i in (*.iso) do copy /y "%%i" "D:\成品测试\%%~ni\meta" 2>nul
- 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 |