|
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
状态 离线
|
|
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
状态 离线
|
|
2007-7-4 08:40 |
|
|
woshixiaoyuer
新手上路
积分 16
发帖 7
注册 2007-7-3
状态 离线
|
『第
7 楼』:
怎么把目录下的所有文件(也包括子目录下的,子目录和文件数目未知),文件名第一个字母改成B?
麻烦大家了
|
|
2007-7-4 08:42 |
|
|
woshixiaoyuer
新手上路
积分 16
发帖 7
注册 2007-7-3
状态 离线
|
|
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 |
|