为什么在搜索*.tif文件时,Windows命令DIR也会输出*.tiff文件?
我想使用Windows命令为什么在搜索*.tif文件时,Windows命令DIR也会输出*.tiff文件?,windows,batch-file,cmd,Windows,Batch File,Cmd,我想使用Windows命令DIR仅查找TIF文件,即扩展名为.TIF的文件。因此,我使用以下小批量文件: for /f "delims=" %%a IN ('dir /b /a-d /s "C:\wolter\testversion-input\*.tif"') do echo %%a for /f "delims=" %%a IN ('dir /b /a-d /s "R:\wolter\testversion-input\
DIR
仅查找TIF
文件,即扩展名为.TIF
的文件。因此,我使用以下小批量文件:
for /f "delims=" %%a IN ('dir /b /a-d /s "C:\wolter\testversion-input\*.tif"') do echo %%a
for /f "delims=" %%a IN ('dir /b /a-d /s "R:\wolter\testversion-input\*.tif"') do echo %%a
现在我想知道这个命令还可以查找TIFF
文件,即扩展名为.TIFF
的文件
因此,我做了一些测试,发现命令DIR
在我的驱动器C:
文件夹C:\wolter\testversion input\
中查找TIF
和TIF
文件,但是在我的驱动器上,R:
文件夹中的R:\wolter\testversion input\
仅通过命令DIR
找到TIF
文件,尽管此文件夹也包含TIF
和TIFF
文件
我的目标是只查找TIF
文件
如何仅查找和处理文件扩展名为
.tif
的文件,而不包括文件扩展名为.tiff
的文件?默认情况下,将根据其符合8.3标准的文件名匹配扩展名。您可以禁用8.3命名(将文件名限制为8个字符,可选扩展名限制为3个字符)
要对NTFS分区执行此操作,请打开命令提示窗口“以管理员身份运行”,然后输入:
“%\uuuu AppDir\uuuuu%fsutil.exe”行为集disable8dot3 1
请注意,禁用8.3命名通常可以提高目录枚举性能,特别是在同一目录中存在大量同名文件的情况下。但是,有些应用程序可能无法找到使用长文件名LFN的文件和目录。此外,禁用不会删除已创建的SFN
对于替代方案,您有几个选择
对于/F“Delims=“%%G In('Dir/A-D/B/S”R:\wolter\testversion input\*.tif“'),如果“%%~xG”==”.tif”Echo%%G,则执行该操作
Dir
传递到findstr.exe
,仅过滤以不区分大小写字符串结尾的字符串.tif
:
For/F“Delims=“%%G In('Dir/A-D/B/S“R:\wolter\testversion input\*.tif”^ |“%\uu AppDir\uuuu%findstr.exe”/EIL.tif”)执行回显%%G
where.exe
:
For/F“Delims=“%%G In(“%”“%\uuuuu AppDir\uuuu%where.exe”/R“R:\wolter\testversion input”“*.tif”2>NUL“)执行回显%%G
但是,where.exe
,也与%PATHEXT%
下列出的扩展名匹配,这意味着虽然它可能会忽略.tiff
文件,但它可能会返回扩展名,如.tif.com
,.tif.exe
,.tif.bat
,.tif.cmd
,.tif.vbs
,.tif.vbe
,.tif.js
,.tif.jse
,.tif.wsf
,.tif.wsh
,以及.tif.msc
。因此,为了增强稳健性,您应该暂时取消定义该变量:
For/F“Delims=“%%G In(”(设置路径=)和“%\uuuuu AppDir\uuuuu%where.exe”/R“R:\wolter\testversion input”“*.tif“2>NUL”)执行Echo%%G
默认情况下,扩展名将根据其符合8.3标准的文件名进行匹配。您可以禁用8.3命名(将文件名限制为8个字符,可选扩展名限制为3个字符) 要对NTFS分区执行此操作,请打开命令提示窗口“以管理员身份运行”,然后输入:
“%\uuuu AppDir\uuuuu%fsutil.exe”行为集disable8dot3 1
请注意,禁用8.3命名通常可以提高目录枚举性能,特别是在同一目录中存在大量同名文件的情况下。但是,有些应用程序可能无法找到使用长文件名LFN的文件和目录。此外,禁用不会删除已创建的SFN
对于替代方案,您有几个选择
对于/F“Delims=“%%G In('Dir/A-D/B/S”R:\wolter\testversion input\*.tif“'),如果“%%~xG”==”.tif”Echo%%G,则执行该操作
Dir
传递到findstr.exe
,仅过滤以不区分大小写字符串结尾的字符串.tif
:
For/F“Delims=“%%G In('Dir/A-D/B/S“R:\wolter\testversion input\*.tif”^ |“%\uu AppDir\uuuu%findstr.exe”/EIL.tif”)执行回显%%G
where.exe
:
For/F“Delims=“%%G In(“%”“%\uuuuu AppDir\uuuu%where.exe”/R“R:\wolter\testversion input”“*.tif”2>NUL“)执行回显%%G
但是,where.exe
,也与%PATHEXT%
下列出的扩展名匹配,这意味着虽然它可能会忽略.tiff
文件,但它可能会返回扩展名,如.tif.com
,.tif.exe
,.tif.bat
,.tif.cmd
,.tif.vbs
,.tif.vbe
,.tif.js
,.tif.jse
,.tif.wsf
,.tif.wsh
,以及.tif.msc
。因此,为了增强稳健性,您应该暂时取消定义该变量:
For/F“Delims=“%%G In(”(设置路径=)和“%\uuuuu AppDir\uuuuu%where.exe”/R“R:\wolter\testversion input”“*.tif“2>NUL”)执行Echo%%G
.do if/i“%%~xa”==”.tif“echo%%a
.do if/i“%%~xa”==”.tif“echo%%a值得一提的是,禁用8.3名称不会擦除已经可用的名称…值得一提的是禁用8.3名称不会擦除已经可用的名称…