创建的文件列表我有例如文件的目录:一个目录
\1.gif
\1.pdf
\1.doc
\2.gif
\2.pdf
\2.doc
\3.gif
\4.gif
如何获得一个文件只具有唯一文件名的文件(扩展)的名单? (即3.gif
,4.gif
)
感谢
创建的文件列表我有例如文件的目录:一个目录
\1.gif
\1.pdf
\1.doc
\2.gif
\2.pdf
\2.doc
\3.gif
\4.gif
如何获得一个文件只具有唯一文件名的文件(扩展)的名单? (即3.gif
,4.gif
)
感谢
我还没有测试,但试试这个:
@echo off
setlocal enabledelayedexpansion
pushd path\to\dir
for /f %%i in ('dir /b *.gif') do (
find "%%~ni" "%tmp%\u" >nul 2>&1 || echo %%~ni >> "%tmp%\u"
)
for /f %%i in ('type "%tmp%\u"') do (
set inc=
for /f %%j in ('dir %%i.gif /b') do set /a inc+=1
if !inc! EQU 1 (dir /b %%i.* ^|find "log" /v >> log)
)
请随意评论,如果有任何错误,而不是在一个位置,以测试它的权利现在。
只要这将作为没有一个文件名包含=
字符:
@echo off
setlocal
for /f "eol== delims==" %%V in ('"set _ 2>nul"') do set "%%V="
for %%F in (*) do if not defined _%%~nF (set "_%%~nF=%%F") else set "_%%~nF=="
for /f "eol== tokens=2 delims==" %%F in ('"set _|findstr /v =="') do @echo %%F
编辑
如果要输出限制到只有一个文件类型。那么你需要的只是一个额外的FINDSTR:
@echo off
setlocal
for /f "eol== delims==" %%V in ('"set _ 2>nul"') do set "%%V="
for %%F in (*) do if not defined _%%~nF (set "_%%~nF=%%F") else set "_%%~nF=="
for /f "eol== tokens=2 delims==" %%F in ('"set _|findstr /v ==|findstr /lie .gif"') do @echo %%F
dbenhan,工作很棒。谢谢。 – user3042704
我能够将它保存到log.txt中。有没有办法只过滤该文件中的特定文件扩展名?感谢您的帮助/时间。 – user3042704
为什么选择投票? – dbenham
这不适用于特殊字符,如!
,=
等。
@ECHO OFF &SETLOCAL
for %%a in (*) do set ".%%~na=%%~xa"& set /a $%%~na+=1
for /f "tokens=1*delims==." %%a in ('set .') do for /f "tokens=2delims==" %%c in ('set "$%%a"') do if %%c==1 echo(%%a.%%b
只是测试它,它似乎工作.... – nephi12
nephi谢谢工作伟大。几个quesitons 1)当我运行文件我得到“系统找不到指定的路径”和几个“文件未找到”。有没有防止显示 – user3042704
2)有没有办法在日志中不包含“日志”文件? 3)是否有修改只会过滤指定的文件扩展名。例如,只有* .gif唯一文件名的列表? 再次感谢您的帮助/时间。非常感激。 – user3042704