Regex 通过筛选重命名文件夹"@a「;

Regex 通过筛选重命名文件夹"@a「;,regex,batch-file,cmd,Regex,Batch File,Cmd,我有一个父文件夹,其中包含许多名为@a的子文件夹。例如, test@atest @atest@a @atest2 test3@a 我想批量重命名筛选出@a部分的所有文件夹。 所需的输出应如下所示 testtest test test2 nest3 注意:过滤后不会出现两个文件夹名称相同的情况。批处理文件不支持正则表达式,但您可以使用: %文件夹:@a=%将用空字符串(=后面的部分)替换@a 您可以使用for循环处理包含@a的所有文件夹: (*@a*)do echo%G中的命令%G将只打印它们

我有一个父文件夹,其中包含许多名为
@a
的子文件夹。例如,

test@atest
@atest@a
@atest2
test3@a
我想批量重命名筛选出
@a
部分的所有文件夹。 所需的输出应如下所示

testtest
test
test2
nest3

注意:过滤后不会出现两个文件夹名称相同的情况。

批处理文件不支持正则表达式,但您可以使用:
%文件夹:@a=%
将用空字符串(
=
后面的部分)替换
@a

您可以使用
for
循环处理包含
@a
的所有文件夹:
(*@a*)do echo%G中的命令
%G将只打印它们。

注意:这将在命令行上工作,您必须在批处理文件中使用
%%G

因此,从所有文件夹名称中删除
@a
的脚本:

setlocal EnableDelayedExpansion
for /d %%G in (*@a*) do (
    set FOLDER=%%G
    move !FOLDER! !FOLDER:@a=!
)

命令
setlocal EnableDelayedExpansion
允许使用循环中所需的变量。变量被
包围而不是执行行时展开的
%

批处理文件不支持正则表达式,但可以使用:
setlocal EnableDelayedExpansion
for /d %%I in (*) do (
    set NAME=%%I
    set NEW=!FOLDER:@a=!
    move !NAME! !NEW!
)

%文件夹:@a=%
将用空字符串(
=
后面的部分)替换
@a

您可以使用
for
循环处理包含
@a
的所有文件夹:
(*@a*)do echo%G
中的命令
%G将只打印它们。

注意:这将在命令行上工作,您必须在批处理文件中使用
%%G

因此,从所有文件夹名称中删除
@a
的脚本:

setlocal EnableDelayedExpansion
for /d %%G in (*@a*) do (
    set FOLDER=%%G
    move !FOLDER! !FOLDER:@a=!
)
命令
setlocal EnableDelayedExpansion
允许使用循环中所需的变量。变量被
包围而不是执行行时要展开的
%

setlocal EnableDelayedExpansion
for /d %%I in (*) do (
    set NAME=%%I
    set NEW=!FOLDER:@a=!
    move !NAME! !NEW!
)
试试看

试试看