Board logo

标题: for如何提取文件的指定路径 [打印本页]

作者: woshixiaoyuer     时间: 2007-7-3 09:25    标题: 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 ]
作者: qinbuer     时间: 2007-7-3 13:03
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
作者: woshixiaoyuer     时间: 2007-7-3 13:42
有一个目录 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   可以截取字符马? 我弄不出来。
作者: woshixiaoyuer     时间: 2007-7-3 15:35
没有人知道怎么做办吗?
:(
作者: qinbuer     时间: 2007-7-3 18:15
"把原来的的C:\YSFC\temp\A0001.zip的文件变成A0001.bak ,然后再删掉C:\YSFC\temp\A0001.zip这个文件"??

直接删除不行么,非要改个名字再删除?
作者: woshixiaoyuer     时间: 2007-7-4 08:40
有人知道怎么做吗?
作者: woshixiaoyuer     时间: 2007-7-4 08:42
怎么把目录下的所有文件(也包括子目录下的,子目录和文件数目未知),文件名第一个字母改成B?
麻烦大家了
作者: woshixiaoyuer     时间: 2007-7-4 12:55
没有人这么用过吗?
作者: bjsh     时间: 2007-7-4 13:10


  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 ]
作者: woshixiaoyuer     时间: 2007-7-4 15:50
============================
至于A0001.zip改为 B0001.zip等问题;

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

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