列出目录中除扩展名以外的所有文件

时间:2015-01-16 22:13:45

标签: batch-file

我想知道如何在目录中显示所有文件,但扩展名除外。

示例: .bat


我的代码:

Dir /ah-d /b /s "%temp%" >>"Temp.TxT"

结果:

Folder123
image.jpg
TESTE.bat
abc.TMP

我想要的结果:

Folder123
image.jpg
abc.TMP

注意:其他文件可能会有所不同。

3 个答案:

答案 0 :(得分:2)

您可以通过管道来过滤输出到FINDSTR,拒绝以您的扩展名结尾的行。

/L选项将搜索视为文字搜索(而不是正则表达式)。 /E选项仅匹配行尾。 /I选项使其不区分大小写。 /V选项反转搜索,保持不匹配的行,过滤掉匹配的行

dir /ah-d /b /s "%temp%" | findstr /live .bat >>"temp.txt"

答案 1 :(得分:0)

这会选择特定的扩展名 - none,jp(例如| g)和tmp。

dir /ah-d /b /s "%temp%\*." "%temp%\*.jp*" "%temp%\*.tmp"

排除管道输出

dir /ah-d /b /s "%temp%\*.*" | Findstr /i /v /c:".bat" >outputfile

答案 2 :(得分:0)

您可以从命令行执行此操作(无需批处理文件):

FOR /F "usebackq tokens=* delims=" %A IN (`DIR /B /S "%temp%"`) DO (IF /I NOT "%~xA"==".bat" ECHO %A>>Out.txt)

这是%~xA部分的关键部分,它将返回正在处理的文件的文件扩展名。然后将其与要排除的扩展(在本例中为.bat)进行比较,如果不匹配,则将文件名写入输出。

请注意,在您的示例中,您显示的是返回的目录,因此我的DIR命令不会排除它们。此外,由于您使用的是/S开关,因此将返回完整路径。如果您只想获取文件名部分,只需替换:

ECHO %A

使用:

ECHO %~nxA