2014-11-14 47 views
-1

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

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

我有几千个文件夹,我想删除文件夹名称的一部分(如果只有Windows会做一个查找和替换文件夹名称,因为这基本上是我想要做的,找到每个我想要的文本字符串OUT并将其替换为空白)。

这些文件夹都有独特的名称,但我想删除的名称部分基本相同。我不希望名称内的任何文件受到任何影响。只有文件夹名称。

例如:

  • 12345_A_9101112_Method_Names
  • 12355_393939_Method_NameB33
  • 12366_BC_1234_Method_Name

我想从文件夹名称中删除是“名称在我的例子中所表示的文本字符串.. “。在其中的一些中,我认为那部分是名字中的一个或两个下划线,而不是末尾。还有大约8个不同的文本字符串我想要删除(我猜我必须为每个不同的名称有不同的批处理文件?)。

正如您所看到的,文件夹名称有所不同,它们的长度和名称都不尽相同,直到要删除的部分。

非常感谢您提前。

+0

有几个批处理文件重命名是免费的,并能够使用正则表达式来做你所需要的。只搜索谷歌的批处理文件重命名 – MiltoxBeyond 2014-11-14 18:50:54

+0

感谢Miltox,不幸的是,我们被限制下载任何第三方软件(我工作的地方,它几乎从字面上需要国会的行为来允许任何事情)。这就是为什么我必须自己写这些噩梦的原因。我正在逐渐学习,并计划在本周末拿起一本教科书。但就目前而言,希望获得一个半简单的脚本。 :) – LWilson 2014-11-14 19:45:36

回答

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以实际重命名目录。