dir /b 生成一个不错的仅文件列表
dir /x 生成详细列表(日期、时间、大小、长名、短名)
但是,如果您将两者结合起来(即 dir /b /x),则 /x 开关将被忽略。此页面的此行为是设计使然。
因此,如果您要求一个仅包含文件短名称的简单列表,Redmond (Microsoft) 表示将其提供给您是违反天规的。
怎么能绕过这个“设计”问题?
提前谢谢了
ps这是为了帮助我实现这个问题中解释的东西。五个好心的朋友发布了我非常感谢的答案,但没有一个答案帮助我得到我想要的。
试试这个:
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
没有将 dir /x 转储到文本文件并对其进行解析,我不确定该建议什么。你有能力在代码中运行你正在做的任何事情吗?
这是一个更复杂的解决方案,但是使用 perl 或其他脚本语言编写一些东西;或者全力以赴,用 C# 编写一些代码。
我怀疑你会得到与上一个问题相同的答案......
您可以编写自己的目录列表可执行文件。在 C# 中创建一些东西并不需要太多。使用 Directory.GetFiles() 检索目录列表,并将每一个传递给“GetShortPathName()”Win32 函数。
此页面有一个不错的示例,说明如何从 C# 调用 GetShortPathName():http: //csharparticles.blogspot.com/2005/07/long-and-short-file-name-conversion-in.html