提前道歉。我研究了几个类似的问题,并试图使用提供的脚本或shell命令,但它们并不适用于我的特定问题。我认为这是因为大多数其他问题涉及文件夹名称中的确切位置,或者删除了一系列数字等。
我在前面提供的批处理文件和shell命令中遇到的其他问题之一就是他们没有指定如何包含特定目录。 (他们可能假设用户已经知道放在哪里。我真的很新,所以我不确定。尝试使用以前批处理文件中的行来这样做是不行的。)
我有几千个文件夹,我想删除文件夹名称的一部分(如果只有windows会对文件夹名称进行查找和替换,因为这基本上就是我想要做的,找到每个文本字符串我想要OUT并用空格替换它们。
这些文件夹都有唯一的名称,但我要删除的名称部分基本相同。而且我不希望名称中的任何文件以任何方式受到影响。只有文件夹名称。
例如:
我想从文件夹名称中删除的是我的示例中用#34; Name ..."表示的文本字符串。在其中的一些,我相信那部分是名称中的一两个下划线,而不是最后。我想删除大约8种不同的文本字符串(我猜测我必须为每个不同的名称使用不同的批处理文件吗?)。
正如您所看到的,文件夹名称有所不同,它们的长度和命名约定不同于要删除的部分。
非常感谢你。
答案 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
的设置以适合您的具体情况。就目前而言,它将删除子字符串name
和eman
- 只需将额外的必需字符串添加到明显区域的列表中。
为了测试目的,所需的REN命令仅为ECHO
。 在您确认命令正确后,将ECHO(REN
更改为REN
以实际重命名目录。