递归删除所有与 .jpg 文件同名的文件。

11 浏览
0 Comments

递归删除所有与 .jpg 文件同名的文件。

我想为我的“发送到”菜单创建一个小批处理脚本,用于删除特定的文件:\n我有很多以这种命名约定命名的文件:`foo.xxx, foo.jpg, bar.xxx和bar.jpg`。我想要递归地删除所有在调用此脚本的级别以下的嵌套文件夹中与之对应的`.xxx`文件。\n根据这个帖子,我得到了以下结果:\n

@ echo off
pushd "%~1"
for /R %%f in (*.jpg) do echo "%%f"

\n至少它似乎列出了`.jpg`文件,但是我收到了以下错误消息:\n

"UNC-Pfade werden nicht unterstützt. Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt."

\n我找到了一个帖子,展示了如何递归地删除文件,但是我不太明白如何将这两个解决方案结合起来,只删除那些我找到了`.jpg`文件的`.xxx`文件。此外,如果能够进行某种合理性检查,检查是否真的存在一个与当前名称相对应的`.xxx`文件,那就太好了,有时这些文件夹中有没有相应`.xxx`文件的`.jpg`文件。\n似乎我可以按照文件扩展名来删除,像这样:\n

@ echo off
pushd "%~1"
for /R %%f in (*.jpg) do echo "%%~nf"

\n但是现在我没有完整的路径来删除想要的文件?到目前为止,这样正确吗?提前谢谢!

0
0 Comments

问题的出现原因是需要递归删除与.jpg文件同名的所有文件。解决方法是使用批处理脚本,利用for循环遍历所有.jpg文件,并删除同名的其他文件。

批处理脚本的代码如下:

@echo off
pushd "%~1"
for /R %%I in (*.jpg) do del "%%~dpnI.vgd"
popd

其中,`pushd "%~1"`用于将当前目录更改为参数指定的目录。`for /R %%I in (*.jpg) do del "%%~dpnI.vgd"`表示遍历所有.jpg文件,使用del命令删除同名的.vgd文件。`popd`用于返回到之前的目录。

如果需要在文件不存在时抑制错误消息,可以将代码修改为:

... do del "%%~dpnI.vgd" 2>nul

上述代码为我“发送到”菜单的批处理脚本。`pushd "%~1"`在这种情况下无效。需要写入命令的部分50次。请问根UNC文件夹的路径是什么?

以上是解决问题的原因和方法的整理。通过使用批处理脚本,我们可以递归删除所有与.jpg文件同名的文件。

0