创建目录的文件列表

时间:2013-11-27 16:52:42

标签: batch-file

我有一个文件目录,例如:

\1.gif
\1.pdf
\1.doc
\2.gif
\2.pdf
\2.doc
\3.gif
\4.gif

如何获取仅包含具有唯一文件名的文件列表(带扩展名)的文件? (即3.gif4.gif

由于

3 个答案:

答案 0 :(得分:0)

我没有测试过,但试试这个:

@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)
)

如果有任何错误,请随时评论,不能立即测试。

答案 1 :(得分:0)

只要没有文件名包含=字符,这将有效:

@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

修改

如果你想将输出限制为只有一种文件类型,例如.gif,那么你只需要一个额外的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

答案 2 :(得分:0)

这不适用于!=等特殊字符。

@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