創建的文件列表我有例如文件的目錄:一個目錄
\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