在cmd.exe下,如何防止“del *.tmp”删除*.tmpl文件?

弗格利厄

在 Windows 10 cmd.exe 下,该命令del *.tmp可能会静默删除project.tmpl.

是否有一些选项、解决方法、注册表项或仪式牺牲可以防止这种情况发生?

令人难以置信的是:在我的机器上,C: 驱动器在 2020 年由 Windows 10 安装程序格式化:

演示

(其中法语错误消息表示未找到文件)。

福禄

最好使用 PowerShell,因为不再匹配短名称。dir在 cmd 中必须匹配短名称,以免破坏 DOS 时代的遗留程序。PowerShell 没有这个限制。只需运行Remove-Item *.tmp或其任何别名,例如rm *.tmpdel *.tmp

在 cmd 中,您必须findstr像这样进行过滤

for /F "delims=" %f in ('dir /B ^| findstr /I /E ".tmp"') do @del "%f"

在批处理文件中替换%f%%f

但是,禁用 8.3 名称生成并删除所有短名称会更好事实上,由于性能原因,Windows 8 和 Windows Server 2012新格式化的卷将默认禁用 8.3 名称生成这也有助于避免这样的情况:WinXP dir command: 3 和 4 char extensions are the same?

事实上,当您格式化新数据卷时,最新版本的 Windows Server 甚至不启用 8.3 命名。

https://docs.microsoft.com/en-us/archive/blogs/josebda/windows-server-2012-file-server-tip-disable-8-3-naming-and-strip-those-short-names-也

如果您的驱动器仍然启用了 8.3 名称生成,则运行以下命令在驱动器 C 上禁用它:

fsutil 8dot3name set C: 1

或运行fsutil 8dot3name set 1以在所有卷上禁用它

该设置也可以在注册表中设置。对应的键是HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreationfsutil和注册表项的值是这样的

  • 0:为系统上的所有卷启用 8dot3 名称创建。
  • 1:禁用系统上所有卷的 8dot3 名称创建。
  • 2:在每个卷的基础上设置 8dot3 名称创建。
  • 3:对除系统卷以外的所有卷禁用 8dot3 名称创建。

如果名称在那里,它也可以删除 fsutil 8dot3name strip

请注意,fsutil必须以管理员权限运行

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章