Cmd dir命令在本地驱动器和网络驱动器之间输出不同的结果

Cmd dir命令在本地驱动器和网络驱动器之间输出不同的结果,cmd,Cmd,我只是在我的电脑上测试了一个cmd: C:\Users\user>dir D:\test\*.xls /b test - copy.xls test - copy.xlsx test.xls test.xlsx C:\Users\user>dir Y:\test\*.xls /b test - copy.xls test.xls 两个测试文件折叠是完全相同的。Dirve“D”是局部Dirve,Dirve“Y”是网络Dirve。我检查了我的机器版本和dirve“Y”的源机器,它们确

我只是在我的电脑上测试了一个cmd:

C:\Users\user>dir D:\test\*.xls /b
test - copy.xls
test - copy.xlsx
test.xls
test.xlsx

C:\Users\user>dir Y:\test\*.xls /b
test - copy.xls
test.xls
两个
测试
文件折叠是完全相同的。Dirve“D”是局部Dirve,Dirve“Y”是网络Dirve。我检查了我的机器版本和dirve“Y”的源机器,它们确实不同。以下是我的问题:

  • 我只计划在本地机器上运行我的程序,是否有选项总是输出第二个结果
  • 如果问题1为“否”,我是否可以添加一些选项,如
    -*.xlsx
    以从我的程序中删除
    *.xlsx
    结果

  • 提前谢谢。

    我可以这样排除
    *.xlsx

    dir D:\test\*.xls /b | findstr /v /i "\.xlsx$" 
    
    将排除偶数xls。*也包括:

    dir D:\test\*.xls /b | findstr /v /i "\.xls.$" 
    

    显然,在本地计算机上启用了短8dot3文件名。 您可以看到,在运行dir/x时。。。 有不同的方法生成8dot3文件名。通常带有三个以上字母的分机会被截断,例如 .xlxs导致.XLS dir命令始终搜索长文件名和8dot3文件名

    您有一些选项可以改变这种行为:

  • 禁用8dot3文件名。这可以通过fsutil.exe完成,可以是每个驱动器,也可以是整个系统

  • 更改在注册表中生成8dot3文件名的方式

  • 在本例中.xlsx将导致.XL~

    注: 当您进行这些更改时,它首先对新创建的文件起作用。 对于较旧的文件,您应该复制它们。
    但是,当您想禁用所有8dot3文件名时,可以使用fsutil.exe删除旧文件中的8dot3文件名。

    我认为,这并不能真正回答问题。是的,它将排除
    .xlsx
    文件,但是如果存在
    .xlsm
    文件,或者扩展名以
    .xls
    开头但不以
    .xls
    结尾的其他文件,会发生什么呢@Compo我还插入了另一个正则表达式,它将排除字符串末尾.xls之后的任何字符
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
    "Win95TruncatedExtensions"=dword:00000000