![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 05:34 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » for如何提取文件的指定路径 |
| 可打印版本 926 / 9 |
| 第1楼 woshixiaoyuer | 发表于 2007-07-03 09:25 |
| 新手上路 发帖 7 积分 16 | |
|
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 ] |
|
| 第2楼 qinbuer | 发表于 2007-07-03 13:03 |
| 高级用户 发帖 228 积分 512 | |
|
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 |
|
| 第3楼 woshixiaoyuer | 发表于 2007-07-03 13:42 |
| 新手上路 发帖 7 积分 16 | |
|
有一个目录 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 可以截取字符马? 我弄不出来。 |
|
| 第4楼 woshixiaoyuer | 发表于 2007-07-03 15:35 |
| 新手上路 发帖 7 积分 16 | |
|
没有人知道怎么做办吗?
:( |
|
| 第5楼 qinbuer | 发表于 2007-07-03 18:15 |
| 高级用户 发帖 228 积分 512 | |
|
"把原来的的C:\YSFC\temp\A0001.zip的文件变成A0001.bak ,然后再删掉C:\YSFC\temp\A0001.zip这个文件"??
直接删除不行么,非要改个名字再删除? |
|
| 第6楼 woshixiaoyuer | 发表于 2007-07-04 08:40 |
| 新手上路 发帖 7 积分 16 | |
|
有人知道怎么做吗?
|
|
| 第7楼 woshixiaoyuer | 发表于 2007-07-04 08:42 |
| 新手上路 发帖 7 积分 16 | |
|
怎么把目录下的所有文件(也包括子目录下的,子目录和文件数目未知),文件名第一个字母改成B?
麻烦大家了 |
|
| 第8楼 woshixiaoyuer | 发表于 2007-07-04 12:55 |
| 新手上路 发帖 7 积分 16 | |
|
没有人这么用过吗?
|
|
| 第9楼 bjsh | 发表于 2007-07-04 13:10 |
| 银牌会员 发帖 621 积分 2,000 | |
xcopy /T /E C:\YSF d:\YSF\ 创建目录结构; 为了方便后面的处理 目录暂且叫 YSF; 处理完后 再更名为:YSFCOM 利用for copy c:%%~pnxi d:%%~pnxi 即可; 至于A0001.zip改为 B0001.zip等问题; 可以再复制完后;统一用 ren A*.*(或具体的后缀) B*.*(或具体的后缀) 改名 即可 至于
直接 ren c:%%~pnxi %%~ni.bak 即可; 重命名了 .zip的自然变成了 .bak的了;无所谓删除了 [ Last edited by bjsh on 2007-7-4 at 01:15 PM ] |
|
| 第10楼 woshixiaoyuer | 发表于 2007-07-04 15:50 |
| 新手上路 发帖 7 积分 16 | |
|
============================
至于A0001.zip改为 B0001.zip等问题; 可以再复制完后;统一用 ren A*.*(或具体的后缀) B*.*(或具体的后缀) 改名 ============================ 谢谢斑竹了,等的就是这个,总是想着怎么截取字符串,弄了半天,原来这样就可以做到,批处理果然很奥妙 :) |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |