如何解决Windows目录的“设计”问题?

时间:2009-03-26 07:27:39

标签: windows dos long-filenames

dir / b会生成一个不错的纯文件列表

dir / x生成详细列表(日期,时间,大小,长名,短名称)

但是,如果将两者(即dir / b / x)合并,则会忽略/ x开关。根据{{​​3}}页面的这种行为是设计使然。

因此,如果您要求一个仅包含文件短名称的简单列表,Redmond(微软)表示,将它提供给您是违反天堂规则的。

怎么可以解决这个'设计'问题呢?

非常感谢提前

P.S。这是为了帮助我实现this问题中解释的内容。五个朋友已经发布了我非常感激的答案,但没有答案帮助我得到了我想要的东西。

3 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:1)

没有将dir / x转储到文本文件并解析它,我不知道该建议什么。你有能力运行你在代码中做的任何事情吗?

这是一个更复杂的解决方案,但使用perl或其他脚本语言编写内容;或者全力以赴,用C#编写一些代码。

我怀疑你会得到与前一个问题相同的答案......

答案 2 :(得分:0)

您可以编写自己的目录列表可执行文件。用C#鞭打东西不会花太多时间。使用Directory.GetFiles()检索目录列表,并将每个目录列表传递给“GetShortPathName()”Win32函数。

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