找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27587|回复: 7

[文件操作] 批处理的存放位置不同导致执行结果不同,为什么?

[复制链接]
发表于 2012-11-19 15:37:40 | 显示全部楼层 |阅读模式
我的批处理名字叫copyphoto.bat,内容是:
  1. for /F %%a in ('dir /b "D:\vedio"') do echo %%~ta
复制代码
我有一个文件夹是:D:\vedio,里面有一些个文件

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

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

各位高手能否分析一下是什么原因?
发表于 2012-11-19 15:50:02 | 显示全部楼层
本帖最后由 tmplinshi 于 2012-11-19 15:57 编辑

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

所以比如你在 c:\test\ 执行批处理,那就是在 c:\test\ 找那些文件。
 楼主| 发表于 2012-11-19 15:57:43 | 显示全部楼层
我还是不太明白:我在其他文件夹执行时,语句里还是已经指明"D:\vedio"这个文件夹了呀,我是初学者,能否再开导开导?
发表于 2012-11-19 16:16:17 | 显示全部楼层
我还是不太明白:我在其他文件夹执行时,语句里还是已经指明"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 有结果
发表于 2012-11-20 00:09:02 | 显示全部楼层
试试这个
  1. for /f "delims=" %%a in ('dir /s /b "D:\vedio"') do echo %%~ta
复制代码
 楼主| 发表于 2012-11-20 10:26:27 | 显示全部楼层
试试这个
  1. for /f "delims=" %%a in ('dir /s /b "D:\vedio"') do echo %%~ta
复制代码
Batcher 发表于 2012-11-20 00:09



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


    加上/s之后,%%a获取到的是文件的完整路径。
 楼主| 发表于 2012-11-20 16:17:29 | 显示全部楼层
回复 7# Batcher


    非常感谢,我好像明白一点了,以后继续努力。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 00:21 , Processed in 0.014809 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表