Board logo

标题: for扩展中短文件名扩展的一个bug [打印本页]

作者: namejm     时间: 2007-1-24 23:24    标题: for扩展中短文件名扩展的一个bug

  在for扩展中,%%~si 表示扩充的路径只含短文件名,但是在以下的测试过程中,却发现真正的情况并非如此:

  测试环境:
D:\abcdefg hijk\abcd efgh.txt
D:\abcdefg hijk\te st.txt
  测试代码:
@echo off
for /f "delims=" %%i in ('dir /a /b *.txt') do echo %%~si
pause
  测试结果:
D:\ABCDEF~1\ABCDEF~1.TXT
D:\ABCDEF~1\TEST~1.TXTtxt
  看到测试结果的最后一条记录了吗?居然扩展到了 TEST~1.TXTtxt

  总结了一下出错的情形,似乎是这样的:当路径中有超过一个的地方因为目录名超过11个字符而扩充到短文件名的时候,文件名+后缀名 少于11个字符且带空格的文件就会发生扩展错误。不知哪位能作一下深入的分析。

[ Last edited by namejm on 2007-1-24 at 02:22 PM ]
作者: fastslz     时间: 2007-1-25 00:07
这个BUG我已领教过了
作者: lxmxn     时间: 2007-1-25 00:47

  呵呵,果然是这样的。

作者: xuduo     时间: 2007-1-30 16:12
我也遇到过
作者: NaturalJ0     时间: 2007-1-30 21:16
还没碰到过,正好学习下。^_^
作者: anqing     时间: 2007-2-8 22:40
看到了,学到了
作者: zqz0012005     时间: 2007-3-8 16:16
不是你说的那样,因为含有空格的文件(夹)的短名称中本来就不能有空格,这并不是for的bug。
作者: taozicici     时间: 2007-5-1 01:34

完全不懂
看来以后每天要有18个小时泡论坛了
作者: everest79     时间: 2007-5-1 03:44
8.3的命令规范中不允许使用空格,所以长名扩展短名时,空格被自动缩进了
作者: ccuu668     时间: 2007-5-2 15:36
看来只有自己多对自己扫扫盲了.感叹呀!这里的强人,高手真多.