如何在特定位置删除包含字符串的文件?

时间:2019-03-09 13:25:35

标签: batch-file

如何使用批处理文件删除文件名中特定位置具有特定字符串的文件?

我要删除由最终用户输入的包含特定字符串的文件。

例如,我想从文件名如下所示的几个目录中删除所有包含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的所有文件。

我可以添加一些将扩展名前的数字作为变量的内容吗?

2 个答案:

答案 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

这将确保删除所有包含您提到的格式的用户输入的文件。

正则表达式说明:

  • /Rfindstr中启用它
  • \是转义字符
  • .是通配符;它表示任何字符,因此您需要一个实点时用\对其进行转义。
  • [0-9]意味着仅在[]中的一个字符存在,如果123,{存在{1}},45678

有关使用的命令的更多信息,请输入9

  • cmd.exe
  • for /?
  • set /?
  • title /?
  • echo /? 解释接受的正则表达式
  • findstr /?
  • pause /?
  • dir /?