batch - 在dir中查找文件名,其中filename包含一个数字

时间:2016-07-27 12:49:52

标签: batch-file

我有一个报告,将文件从网络(NTFS)文件夹存放到另一个特定网络(NTFS)文件夹中。某些文件在文件名中包含随机数字字符串(示例文件名:xxsample_export 2131.xml)。我需要查找并删除文件夹中包含文件名中数字的所有文件。我尝试过使用Findstr但到目前为止没有运气。 :(

编辑:我试过这个,我在发现时非常新。谢谢你的协助。

for /F %%F in (dir /A -D "%Path%\*.xml" | findstr  /R "[0-9]*.xml" do del %%F"    

3 个答案:

答案 0 :(得分:2)

Lame但很快(我认为del yourdir\*[0-9].xml会起作用但是没有),只有在需要平面删除时才有效,否则请使用dir /Bfindstr查看aschipfl的解决方案

在.bat文件中(yourdir是您要删除文件的目录):

for %%n in (1 2 3 4 5 6 7 8 9 0) do for %%a in (yourdir\*%%n.xml) do del "%%a" 2>NUL

答案 1 :(得分:2)

以下是使用findstr的解决方案:

set "LOCATION=\path\to\files"
for /F "eol=| delims=" %%F in ('
    dir /B /A:-D "%LOCATION%\*.xml" ^
        ^| findstr /I /R "[0-9][0-9]*\.xml$"
') do (
    del "%LOCATION%\%%F"
)

这将删除包含数字的所有.xml个文件作为其文件名的最后一部分。

答案 2 :(得分:1)

我知道这个问题很旧,但是以防万一有人用谷歌搜索,这就是我最后要做的事情:

对于当前目录中的每个文件:

for %%n in (1 2 3 4 5 6 7 8 9 0) do (
for %%f in (*) do (echo %%f|findstr /i /L "%%n">nul
if errorlevel 1 (echo skip) else ( del "%%f") ) )

对于每个文件夹:

for %%n in (1 2 3 4 5 6 7 8 9 0) do (
for /d %%f in (*) do (echo %%f|findstr /i /L "%%n">nul
if errorlevel 1 (echo skip) else ( rmdir "%%f" /s /q) ) )

对于当前目录中每个文件夹内的每个文件:

for %%n in (1 2 3 4 5 6 7 8 9 0) do (
for /d %%f in ("%cd%\"*) do ( cd "%%f" &  for %%f in (*) do (echo %%f|findstr /L "%%n">nul
if errorlevel 1 (echo skip) else ( del "%%f") ) ) )