标题: [文件操作] 批处理命令for + dir 问题 [打印本页]
作者: newswan 时间: 2021-8-28 13:23 标题: 批处理命令for + dir 问题
如果不在 d:\ 运行下面命令,全路径的路径部分是 当前路径 ?- for /f %%a in ('dir /b d:\') do (
- echo "%%~fa"
- )
复制代码
作者: Fit 时间: 2021-8-28 14:18
dir /b 在当前路劲下
作者: Fit 时间: 2021-8-28 14:22
%%~f 盘符+路径+文件全名(或文件夹名)
作者: qixiaobin0715 时间: 2021-8-28 15:01
回复 1# newswan
我觉得是你对当前路径理解有误,所谓当前路径是个相对的概念,是指代码运行时不需要指定路径:
1.比如,将批处理文件放在某个文件夹中,如果不指定路径,此文件夹即是当前文件夹,在此文件夹中文件重命名的话可直接操作。
ren "1.txt" "2.txt"
2.要想改变当前路径,可用
cd /d "指定目录"
那么以下的代码就会在新的当前路径下(上面的“指定目录”)运行。
3.在cd上下各加一行语句:echo,%cd%。即可证实路径是否改变。
作者: qixiaobin0715 时间: 2021-8-28 16:54
dir /b d:\获得的只是文件名或文件夹名,而没有路径信息或者说路径信息与文件名及文件夹名无关联。
作者: Five66 时间: 2021-8-28 17:38
dir /b d:\已经指定了路径,%%~fa是扩充到全路径,全路径就是全路径,跟运行命令时的当前路径没有关系
作者: newswan 时间: 2021-8-28 17:49
就是这个问题
dir /b 只能获得 name ,在 for 的 in ('dir /b 非当前路径') 中,扩展 f d p a t z 都无效
dir /s /b 才能获得 fullname
作者: qixiaobin0715 时间: 2021-8-28 17:55
本帖最后由 qixiaobin0715 于 2021-8-28 17:56 编辑
那样的话获得本来就是全路径,就用不着%~fI。只有在当前路径(不包括子文件夹时)处理文件及文件夹才能用到%~fI
作者: Five66 时间: 2021-8-28 19:51
回复 7# qixiaobin0715
不就是预期跟非预期,运行出现非预期情况有啥奇怪的
作者: Five66 时间: 2021-8-28 20:07
回复 8# newswan
估计拓展路径以%a为基准,而%a被dir /b吃掉没了路径,所以用的当前路径
也可能是dir /b内部也用d:\作为当前路径,出现了两个路径,但默认用运行批处理所在路径
出现这种情况也没啥奇怪的,别用拓展路径自己手动加上路径就行
作者: newswan 时间: 2021-8-28 23:19
批处理 管道 传递的是 "文本" ,不是对象,没有属性,for 语句从命令中得到只是文本
dir /b 输出的不带路径
dir /s /b 输出的是全路径
作者: Five66 时间: 2021-8-29 18:37
回复 13# qixiaobin0715
预期就是我长的非常帅,非预期就是其实我长的并不帅,你说这是 我说自己长的帅的问题 还是 我其实长的并不帅的问题
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |