如何使用批处理文件删除文件名中特定位置具有特定字符串的文件?
我要删除由最终用户输入的包含特定字符串的文件。
例如,我想从文件名如下所示的几个目录中删除所有包含Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharmCE\helpers\pydev\pydevconsole.py", line 5, in <module>
from _pydev_comm.rpc import make_rpc_client, start_rpc_server, start_rpc_server_and_make_client
File "C:\Program Files\JetBrains\PyCharmCE\helpers\pydev\_pydev_comm\rpc.py", line 4, in <module>
from _pydev_comm.server import TSingleThreadedServer
File "C:\Program Files\JetBrains\PyCharmCE\helpers\pydev\_pydev_comm\server.py", line 4, in <module>
from _shaded_thriftpy.server import TServer
File "C:\Program Files\JetBrains\PyCharmCE\helpers\third_party\thriftpy\_shaded_thriftpy\server.py", line 9, in <module>
from _shaded_thriftpy.transport import (
File "C:\Program Files\JetBrains\PyCharmCE\helpers\third_party\thriftpy\_shaded_thriftpy\transport\__init__.py", line 57, in <module>
from .sslsocket import TSSLSocket, TSSLServerSocket # noqa
File "C:\Program Files\JetBrains\PyCharmCE\helpers\third_party\thriftpy\_shaded_thriftpy\transport\sslsocket.py", line 7, in <module>
import ssl
File "C:\miniconda3\lib\ssl.py", line 98, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: DLL load failed: The specified module could not be found.
的文件:
2019
我有以下代码:
FILE 2019.03.09.FILE.2019.XXX
我输入了特定的数字并且可以使用,但是还会删除名称中带有Year的所有文件。
我可以添加一些将扩展名前的数字作为变量的内容吗?
答案 0 :(得分:1)
感谢您的所有回答和评论。我以其他方式解决了这个问题。我只是在百分号之前添加了一个点,并在末尾删除了一个点。由于没有一个约会,所以可以解决问题。效果很好-通过大约50种不同的文件名组合进行了测试。
del /q /s "C:\Directory1\*.%_FileNumber%*"
del /q /s "C:\Directory2\*.%_FileNumber%*"
答案 1 :(得分:1)
如果您提供的所有文件的格式为FILE yyyy.mm.dd.FILE.yyyy.ext
,则将findstr
与正则表达式一起使用:
@echo off
title REMOVE FILES
echo:
set /p "_FileNumber=Enter file number You want to remove: "
for /F "delims= eol=" %%A IN ('dir /S /B /A-D "*" ^| findstr /RC:"FILE %_FileNumber%\.[0-9][0-9]\.[0-9][0-9]\.FILE\.%_FileNumber%\.ext"') do del /F /A "%%~fA"
pause
这将确保删除所有包含您提到的格式的用户输入的文件。
正则表达式说明:
/R
在findstr
中启用它\
是转义字符.
是通配符;它表示任何字符,因此您需要一个实点时用\
对其进行转义。[0-9]
意味着仅在[]
中的一个字符存在,如果1
,2
,3
,{存在{1}},4
,5
,6
,7
,8
。有关使用的命令的更多信息,请输入9
:
cmd.exe
for /?
set /?
title /?
echo /?
解释接受的正则表达式findstr /?
pause /?
dir /?