【发布时间】:2020-05-26 12:53:51
【问题描述】:
我想为我的“发送到”菜单创建一个小批量脚本,用于删除某些文件:
我有很多以这种约定命名的文件:foo.xxx, foo.jpg, bar.xxx and bar.jpg。我想删除 .xxx 文件,其中有一个对应的 .jpg 文件,用于在我调用此脚本的级别以下的所有嵌套文件夹中递归。
基于这个post我想出了以下内容:
@ echo off
pushd "%~1"
for /R %%f in (*.jpg) do echo "%%f"
这至少列出了 .jpg 文件,但我收到一条错误消息,内容如下:
“UNC-Pfade werden nicht unterstützt.Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt。”
我找到了一个post,它显示了如何递归删除文件,但我真的不明白如何结合这两种解决方案来仅删除那些我找到.jpg 的.xxx 文件。此外,如果有一些健全性检查来检查是否确实存在具有当前名称的 .xxx 文件,那将是很好的,有时这些文件夹中的 .jpg 文件没有对应的 .xxx 文件。
看来我可以像这样通过file extension 删除:
@ echo off
pushd "%~1"
for /R %%f in (*.jpg) do echo "%%~nf"
但是现在我没有完整的路径来删除想要的文件?到目前为止这是正确的吗?提前谢谢!
【问题讨论】:
-
您是否要在网络驱动器上执行此操作?
-
是的,它既可以在网络驱动器(存储数据的地方)上工作,也可以在我的本地驱动器上工作。
-
我的德语不太好,但是这个“UNC Pfade”的措辞意味着你不能在网络路径上这样做。尝试将此网络路径映射到一个字母(使用 SUBST 命令),然后使用通常的 DOS 路径。
-
感谢您的提示,但脚本甚至按原样列出了正确的路径和文件......但我仍然不明白如何删除我想要的那些文件。我可以稍后解决 UNC-PAth 错误。
-
鉴于命令扩展已启用,无论如何这是默认配置,
pushd确实支持 UNC 路径并映射这样的临时驱动器号,成为当前工作目录(popd删除然后是临时驱动器号)。这是您遇到问题的整个脚本,还是您到目前为止没有共享的代码?
标签: windows batch-file