【问题标题】:How to delete specific name pattern directories in temp folder如何删除临时文件夹中的特定名称模式目录
【发布时间】:2019-07-18 18:46:21
【问题描述】:

我需要编写一个 Windows bat 程序来删除具有命名模式的特定文件夹 scoped_dir45666,scoped_dir45667 ...等等(例如)(包括内容) 与批处理程序。为此,我使用以下代码:

@echo off
Taskkill /IM chromedriver.exe /F 
Taskkill /IM chrome.exe /F
cd /D %temp%
for /d %%D in (*) do rd /s /q "%%D"
del /f /q *

但它会删除 %temp% 下的所有内容导致系统问题...(我猜它也搞砸了一些 os 文件)

我需要删除我的用户的 %temp% 目录下所有以 scoped_dirxxxxx (scoped_dir*) 开头的目录名称,有人可以建议如何修改上述代码以仅删除 %temp% 文件夹中以 scoped_dir 开头的文件夹名称

【问题讨论】:

  • 你说“它正在删除%temp%下的所有东西”。好吧,因为你告诉它删除所有目录,除此之外你还在那个目录中执行del /f /q * ..
  • 您自己尝试过什么吗?当* 匹配所有目录时,您认为应该模式如何仅匹配以scoped_dir 开头的文件?你试过scoped_dir*吗?
  • 请注意,不需要先CD进入目录,使用@For /D %%A In ("%TEMP%\scoped_dir*") Do @RD /S/Q "%%A"即可。
  • 感谢所有建议,我正在尝试在实际删除之前进行模拟。但是在 Do Echo @RD /S/Q "%%A " 中包括 echo ,cmd 正在闪烁并继续...我想在删除之前至少回显,所以我可以确定我要删除的内容..
  • @asp,使用@For /D %%A In ("%TEMP%\scoped_dir*") Do @Echo(RD /S/Q "%%A",然后在其下方临时添加另一行@Pause,这将使窗口保持打开状态,直到您按照说明操作...

标签: windows batch-file temp


【解决方案1】:

只要在通配符前面加上前缀即可:

for /d %%D in (scoped_dir*) do rd /s /q "%%D"

如果你只想删除这些目录,你也应该去掉最后一行del /f /q *,因为它会删除你%TEMP%目录根目录下的所有文件。

【讨论】:

  • 是的,我想这是 del 命令的问题,它搞砸了一些东西。是的,我只想删除范围目录@echo off Taskkill /IM chromedriver.exe /F Taskkill /IM chrome.exe /F cd /D %temp% for /d %%D in (scoped_dir*) do rd /s /q "%%D" 所以这些就足够了,我删除了最后一行
  • @asp 酷。请注意,您在上面的评论中仍然有未加前缀的通配符 *...
  • 对不起,我刚刚编辑了我现在要尝试...现在更新的语句应该可以正常工作吗?我还需要提到 %temp% 的完整路径还是会自动采取..我有点谨慎,因为我之前的尝试搞砸了一些东西:)
  • @asp 是的!它只会删除名称以scoped_dir 开头的目录。你之前是CDing 到%TEMP%,所以不需要用这个脚本再次提及它。了解您很谨慎 - 提示:为了测试您的脚本,请将 rd /s /q "%%D" 替换为 ECHO rd /s /q "%%D",以便您查看将执行的操作。如果您对此有信心,请再次删除 ECHO 以“激活”脚本。
  • 嗨,我按照 testTaskkill /IM chromedriver.exe /F Taskkill /IM chrome.exe /F cd /D %temp% for /d %%D in (scoped_dir*) do ECHO rd /s /q "%%D" 的建议在脚本下面运行了,我粘贴到 notpead,将其保存为 bat 文件,然后运行它,cmd 闪烁消失了,有些它不允许看到输出..任何建议
猜你喜欢
  • 1970-01-01
  • 2017-01-01
  • 2016-08-02
  • 1970-01-01
  • 2012-12-11
  • 2017-01-03
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
相关资源
最近更新 更多