【问题标题】:File found with search function, but not delete function in batch file?找到具有搜索功能的文件,但在批处理文件中没有删除功能?
【发布时间】:2013-06-29 05:15:12
【问题描述】:

我在可以导航到并实际查看的目录中有一个系统文件,但是当我使用 CMD 并在该目录上调用 DIR 时,它不会返回那里的文件条目。此外,如果我尝试使用 DEL 命令删除上述文件之一,它会显示“找不到(完整文件路径)”。我试图弄清楚为什么找不到/删除这些文件,以便我可以让我的批处理文件找到/删除它们。此外,当我运行批处理文件以扫描目录中包含特定单词的文件时,它会返回准确指示文件名的结果,这应该意味着它识别出它存在于该搜索中,但是当它跟进删除时命令,它会抛出关于找不到相关文件的消息?

我的代码示例及其返回的行:

::hard coded
cd "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"

::hard coded
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys>for /F "eol=: delims=" %F in ('findstr /m example *') do del "%F" 

::result
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys>del "87b9f8355d9ab561e
eb667a5ccb38f87_1fc45d94-7459-4c39-ad73-4958749bb84f" 

::result    
Could Not Find C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\87b9f8355d9ab561e
eb667a5ccb38f87_1fc45d94-7459-4c39-ad73-4958749bb84f

【问题讨论】:

  • 尝试在该文件夹上运行命令时收到“无法打开”消息(因为即使管理员也只能访问该文件夹,而不能访问其中的文件)。无论如何,您要解决什么问题?该文件夹是证书存储的物理位置之一。如果要删除证书,应通过Certificates MMC 管理单元、certutil 或 PowerShell 进行。
  • 我想从这个目录中删除包含特定文本的文件。我可以在记事本中手动打开文件并运行搜索文本,如果找到,我可以将其关闭并删除。我基本上只是想用我的批处理命令复制那个动作。
  • 我已经明白你想要做什么了。我的问题是为什么你想这样做,即你想通过这样做来实现什么。另外,您是否理解我的解释,为什么这样做一开始就不是一个热门的想法?
  • 是的,我知道这通常是不可取的,但我有一个程序往往会在此处留下条目,这会在重新分发到同一台机器时导致问题。所以我完全理解它通常不被推荐,但这是我想做的。
  • 您是否尝试使用我之前提到的方法清理这些条目?

标签: windows batch-file cmd


【解决方案1】:

尝试:

del /as /q "%F"

输入del /?寻求帮助

【讨论】:

  • 成功了!这似乎成功了。谢谢你,先生。
【解决方案2】:

您会发现这些文件设置了 system 属性 - 也许您需要先清除该属性。

attrib *

将显示(所有文件的)属性

attrib -s *

将清除(所有文件的)“s”属性 - 至少对于“普通”文件。这是否适用于 Microsoft-specials 取决于更高的权力。

【讨论】:

  • 听起来是个好主意,但不幸的是,该调用仍然被拒绝访问。以管理员身份运行批处理文件时结果相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 2011-01-11
  • 1970-01-01
  • 2015-08-18
  • 2012-03-09
  • 2015-03-23
相关资源
最近更新 更多