Board logo

标题: [文件操作] 批处理的存放位置不同导致执行结果不同,为什么? [打印本页]

作者: easterling    时间: 2012-11-19 15:37     标题: 批处理的存放位置不同导致执行结果不同,为什么?

我的批处理名字叫copyphoto.bat,内容是:
  1. for /F %%a in ('dir /b "D:\vedio"') do echo %%~ta
复制代码
我有一个文件夹是:D:\vedio,里面有一些个文件

我的问题是:把批处理放到D:\vedio下面运行结果正常:

放到其他路径执行结果是:

各位高手能否分析一下是什么原因?
作者: tmplinshi    时间: 2012-11-19 15:50

本帖最后由 tmplinshi 于 2012-11-19 15:57 编辑

dir /b "D:\vedio" 只是列出了文件名,然后 for 命令是在当前目录找那些文件。

所以比如你在 c:\test\ 执行批处理,那就是在 c:\test\ 找那些文件。
作者: easterling    时间: 2012-11-19 15:57

我还是不太明白:我在其他文件夹执行时,语句里还是已经指明"D:\vedio"这个文件夹了呀,我是初学者,能否再开导开导?
作者: tmplinshi    时间: 2012-11-19 16:16

我还是不太明白:我在其他文件夹执行时,语句里还是已经指明"D:\vedio"这个文件夹了呀,我是初学者,能否再 ...
easterling 发表于 2012-11-19 15:57



就好象:
for %%a in (cmd.exe) do echo %%~ta 没有结果
for %%a in (c:\windows\system32\cmd.exe) do echo %%~ta 有结果
作者: Batcher    时间: 2012-11-20 00:09

试试这个
  1. for /f "delims=" %%a in ('dir /s /b "D:\vedio"') do echo %%~ta
复制代码

作者: easterling    时间: 2012-11-20 10:26

试试这个
  1. for /f "delims=" %%a in ('dir /s /b "D:\vedio"') do echo %%~ta
复制代码
Batcher 发表于 2012-11-20 00:09



    这个果然管用,能解释一下吗:为什么我的命令里已经有了绝对路径还不管用,而加了个/s就管用了呢?
还有一个小问题是:加了/s以后子目录里的文件也被显示出来了,不过这个暂时不影响大局,因为我的文件夹里还没有子目录。
作者: Batcher    时间: 2012-11-20 12:50

回复 6# easterling


    加上/s之后,%%a获取到的是文件的完整路径。
作者: easterling    时间: 2012-11-20 16:17

回复 7# Batcher


    非常感谢,我好像明白一点了,以后继续努力。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2