批量删除部分文件夹名称(类似于查找和替换?)

时间:2014-11-14 18:49:17

标签: batch-file

提前道歉。我研究了几个类似的问题,并试图使用提供的脚本或shell命令,但它们并不适用于我的特定问题。我认为这是因为大多数其他问题涉及文件夹名称中的确切位置,或者删除了一系列数字等。

我在前面提供的批处理文件和shell命令中遇到的其他问题之一就是他们没有指定如何包含特定目录。 (他们可能假设用户已经知道放在哪里。我真的很新,所以我不确定。尝试使用以前批处理文件中的行来这样做是不行的。)

我有几千个文件夹,我想删除文件夹名称的一部分(如果只有windows会对文件夹名称进行查找和替换,因为这基本上就是我想要做的,找到每个文本字符串我想要OUT并用空格替换它们。

这些文件夹都有唯一的名称,但我要删除的名称部分基本相同。而且我不希望名称中的任何文件以任何方式受到影响。只有文件夹名称。

例如:

  • 12345_A_9101112_Method_Names
  • 12355_393939_Method_NameB33
  • 12366_BC_1234_Method_Name

我想从文件夹名称中删除的是我的示例中用#34; Name ..."表示的文本字符串。在其中的一些,我相信那部分是名称中的一两个下划线,而不是最后。我想删除大约8种不同的文本字符串(我猜测我必须为每个不同的名称使用不同的批处理文件吗?)。

正如您所看到的,文件夹名称有所不同,它们的长度和命名约定不同于要删除的部分。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "sourcedir=U:\sourcedir"
FOR %%q IN (name eman) DO (
 FOR /r "%sourcedir%" /d %%a IN (*%%q*) DO (
  SET "dname=%%~nxa"
  SET "dname=!dname:%%q=!"
  IF NOT "%%~nxa"=="!dname!" ECHO(REN "%%a" "!dname!"
 )
)

GOTO :EOF

这应该有效 - 您需要更改sourcedir的设置以适合您的具体情况。就目前而言,它将删除子字符串nameeman - 只需将额外的必需字符串添加到明显区域的列表中。

为了测试目的,所需的REN命令仅为ECHO在您确认命令正确后,将ECHO(REN更改为REN以实际重命名目录。