中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: for如何提取文件的指定路径 上一主题 | 下一主题
woshixiaoyuer
新手上路





积分 16
发帖 7
注册 2007-7-3
状态 离线
『楼 主』:  for如何提取文件的指定路径

问题是这样的,
有一个目录 C:\YSF
还有一个目录 D:\YSFCOM
在C:\YSF这个目录下可能有若干个目录,每个目录下还有若干个文件,现在我要对每个文件按照原来的目录结构复制到D:\YSFCOM下,用xcopy可以做到,但是我现在要对每个文件处理然后再copy过去,所以只能一个个拷贝,我想在for中把取到的每个%~fi  做处理,去掉C:\YSF 加上D:\YSFCOM,但是%~fi 是不是不能截取字段呢? 用:~0,6 好像没反应,我也 用 set temp = "%%~fi" ,然后处理temp,但是echo %temp% > 1.log 为什么什么都看不到,别说在做别的处理了?
想问问大家,
1怎么截取字段关于%~fi 此类的
2还有为什么我不能 echo 出 temp 的值呢,echo "%%~fi" 是可以的
3我想实现的功能怎么实现呢?
有点急,批处理我又不懂,查了很久还是没有解决,麻烦大家看看,先谢了。

[ Last edited by bjsh on 2007-7-31 at 10:08 AM ]

2007-7-3 09:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qinbuer
高级用户

我思故我在


积分 512
发帖 228
注册 2007-1-21
状态 离线
『第 2 楼』:  

1 FOR/? 查看帮助
  
给个例子:for %%i in (test.txt) do echo %%~fi

test.txt在搜索路径或当前目录,另外,%~fi只是将 %i 扩充到一个完全合格的路径

名,截取字符的方法你可以搜索论坛

2 echo %temp% > 1.log完全可以,你可以在批处理的当前目录下找到1.log,至于

你为什么看不到,我看最好将你的代码完全贴出来,要不然别人也帮不了你找到原因

3 或许是我不了解你的意思,但我不知道你要对什么格式的文件进行什么样的处理,

我想你完全不必要这么麻烦,还要去掉C:\YSF 加上D:\YSFCOM ^_^!

比如 for /f %%i in ('dir /a /b /s C:\YSF') do "加上你要处理的事件" ,最后再COPY



我确实是只菜鸟,而且这里X人太多,所以我不敢装X。谁要再说我装X,我就XXOO他。
2007-7-3 13:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
woshixiaoyuer
新手上路





积分 16
发帖 7
注册 2007-7-3
状态 离线
『第 3 楼』:  

有一个目录 C:\YSF,下面的目录名字和数量是不知道,子目录下还有若干zip文件。
还有一个目录 D:\YSFCOM,是空的。
我想实现的功能是‘
比如说存在C:\YSFC\temp\A0001.zip文件,我要处理是要把这个文件拷贝到D:\YSFC\temp\B0001.zip。还是在temp目录下,但是名字要改成B0001.zip,而且还要把原来的的C:\YSFC\temp\A0001.zip的文件变成A0001.bak ,然后再删掉C:\YSFC\temp\A0001.zip这个文件。直接用xcopy是不可以做到的。
所以我想在for中处理%~fi  ,这样路径我就可以自己随便更改,满足自己的要求。
但是%~fi   可以截取字符马? 我弄不出来。

2007-7-3 13:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
woshixiaoyuer
新手上路





积分 16
发帖 7
注册 2007-7-3
状态 离线
『第 4 楼』:  

没有人知道怎么做办吗?
:(

2007-7-3 15:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qinbuer
高级用户

我思故我在


积分 512
发帖 228
注册 2007-1-21
状态 离线
『第 5 楼』:  

"把原来的的C:\YSFC\temp\A0001.zip的文件变成A0001.bak ,然后再删掉C:\YSFC\temp\A0001.zip这个文件"??

直接删除不行么,非要改个名字再删除?



我确实是只菜鸟,而且这里X人太多,所以我不敢装X。谁要再说我装X,我就XXOO他。
2007-7-3 18:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
woshixiaoyuer
新手上路





积分 16
发帖 7
注册 2007-7-3
状态 离线
『第 6 楼』:  

有人知道怎么做吗?

2007-7-4 08:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
woshixiaoyuer
新手上路





积分 16
发帖 7
注册 2007-7-3
状态 离线
『第 7 楼』:  

怎么把目录下的所有文件(也包括子目录下的,子目录和文件数目未知),文件名第一个字母改成B?
麻烦大家了

2007-7-4 08:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
woshixiaoyuer
新手上路





积分 16
发帖 7
注册 2007-7-3
状态 离线
『第 8 楼』:  

没有人这么用过吗?

2007-7-4 12:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 9 楼』:  



  Quote:
有一个目录 C:\YSF,下面的目录名字和数量是不知道,子目录下还有若干zip文件。
还有一个目录 D:\YSFCOM,是空的。
我想实现的功能是‘
比如说存在C:\YSFC\temp\A0001.zip文件,我要处理是要把这个文件拷贝到D:\YSFC\temp\B0001.zip。还是在temp目录下,但是名字要改成B0001.zip,而且还要把原来的的C:\YSFC\temp\A0001.zip的文件变成A0001.bak ,然后再删掉C:\YSFC\temp\A0001.zip这个文件。直接用xcopy是不可以做到的。
所以我想在for中处理%~fi  ,这样路径我就可以自己随便更改,满足自己的要求。
但是%~fi   可以截取字符马? 我弄不出来。

xcopy /T /E C:\YSF d:\YSF\
创建目录结构; 为了方便后面的处理 目录暂且叫 YSF;
处理完后 再更名为:YSFCOM

利用for
copy c:%%~pnxi d:%%~pnxi
即可;

至于A0001.zip改为 B0001.zip等问题;

可以再复制完后;统一用 ren A*.*(或具体的后缀) B*.*(或具体的后缀) 改名
即可

至于

  Quote:
而且还要把原来的的C:\YSFC\temp\A0001.zip的文件变成A0001.bak ,然后再删掉C:\YSFC\temp\A0001.zip这个文件

直接 ren c:%%~pnxi %%~ni.bak 即可; 重命名了 .zip的自然变成了 .bak的了;无所谓删除了

[ Last edited by bjsh on 2007-7-4 at 01:15 PM ]

2007-7-4 13:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
woshixiaoyuer
新手上路





积分 16
发帖 7
注册 2007-7-3
状态 离线
『第 10 楼』:  

============================
至于A0001.zip改为 B0001.zip等问题;

可以再复制完后;统一用 ren A*.*(或具体的后缀) B*.*(或具体的后缀) 改名
============================

谢谢斑竹了,等的就是这个,总是想着怎么截取字符串,弄了半天,原来这样就可以做到,批处理果然很奥妙 :)

2007-7-4 15:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: