我有一个报告,将文件从网络(NTFS)文件夹存放到另一个特定网络(NTFS)文件夹中。某些文件在文件名中包含随机数字字符串(示例文件名:xxsample_export 2131.xml
)。我需要查找并删除文件夹中包含文件名中数字的所有文件。我尝试过使用Findstr但到目前为止没有运气。 :(
编辑:我试过这个,我在发现时非常新。谢谢你的协助。
for /F %%F in (dir /A -D "%Path%\*.xml" | findstr /R "[0-9]*.xml" do del %%F"
答案 0 :(得分:2)
Lame但很快(我认为del yourdir\*[0-9].xml
会起作用但是没有),只有在需要平面删除时才有效,否则请使用dir /B
和findstr
查看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") ) ) )