如何解决与Windows目录一个“设计”的问题?(How to get around a '

2019-10-29 10:43发布

DIR / B产生了很好的唯一文件列表

DIR / X产生的详细列表(日期,时间,大小,LONGNAME,短名称)

但是,如果将二者结合起来(即DIR / B / X)/ x开关被忽略。 这种行为按照这个网页是由设计。

所以,如果你问只包含的文件的简短名字一个简单的列表,雷蒙德(微软)说,这是向天上的规则,把它给你。

一个人怎么能解决这个“设计”的问题?

提前谢谢了

备注:这是帮我实现的东西在解释这个问题。 五种好友发布对谁我很感谢的答案,但答案非让我得到我想要的东西。

Answer 1:

尝试这个:

for /f "usebackq delims=" %X in (`dir /b`) do @echo %~nsxX

或者,如果你想完全合格的路径名:

for /f "usebackq delims=" %X in (`dir /b`) do @echo %~fsX

欲了解更多信息,请参阅for帮助:

for /?

需要注意的是,如果你在一个批处理文件中使用这些命令,你需要加倍的%的迹象。 例如:

for /f "usebackq delims=" %%X in (`dir /b`) do @echo %%~nsxX


Answer 2:

短DIR / X倾销到一个文本文件,并解析它的,我不知道到什么建议。 你必须运行不管它是你在代码做的能力吗?

这是一个更复杂的解决方案,但是使用Perl或其他脚本语言写的东西; 或者去整个生猪和C#编写一些代码。

我怀疑你会得到很多的同类,你在前面的问题得到的答案...



Answer 3:

你可以写你自己的目录列表可执行文件。 它不会花费太多掀起在C#中的东西。 使用Directory.GetFiles()来检索目录列表,并通过每一个进入“GetShortPathName()” Win32函数。

这页有如何从C#调用GetShortPathName()一个体面的例子: http://csharparticles.blogspot.com/2005/07/long-and-short-file-name-conversion-in.html



文章来源: How to get around a 'by design' issue with Windows dir?