dir / b会生成一个不错的纯文件列表
dir / x生成详细列表(日期,时间,大小,长名,短名称)
但是,如果将两者(即dir / b / x)合并,则会忽略/ x开关。根据{{3}}页面的这种行为是设计使然。
因此,如果您要求一个仅包含文件短名称的简单列表,Redmond(微软)表示,将它提供给您是违反天堂规则的。
怎么可以解决这个'设计'问题呢?
非常感谢提前
P.S。这是为了帮助我实现this问题中解释的内容。五个朋友已经发布了我非常感激的答案,但没有答案帮助我得到了我想要的东西。
答案 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