我在寻找一个脚本(Perl中,Python或批处理将被罚款),将经过一个指定的文件树和重命名所有子文件。

例如,Folder1>File1.anytype变得Folder1>Folder1File1.anytype

由于

有帮助吗?

解决方案

您提一个批处理文件,这可能意味着你是在Windows(我假设你是指一个.bat文件)。如果你是在UNIX系统上,给这一个镜头:

find . -mindepth 2 -type f -exec sh -c "mv {} \`dirname {}\`/\`dirname {} | sed 's/^\.//' | sed 's/\///g'\`\`basename {}\`" \;

另外,这条巨蟒3程序可能做的伎俩(还应该在Windows工作...):

#!/usr/bin/env python3.0

import os
import sys 

def raise_error(e):
    raise e

def full_split(path):
    head, tail = os.path.split(path)

    if head:
        return full_split(head) + [tail]

    return [tail]

def main(args):
    if len(args) != 1:
         print("Please specify one target directory", file=sys.stderr)
         sys.exit(1)

    os.chdir(args[0])
    for dirpath, _, filenames in os.walk('.', onerror=raise_error):
        for f in filenames:
            old = os.path.join(dirpath, f)
            new = os.path.join(dirpath, ''.join(full_split(dirpath[2:]) + [f]))
            os.rename(old, new)

if __name__ == '__main__':
    main(sys.argv[1:])

之前的目录布局:

.:
Abc  Def

./Abc:
Foo2.bar  Foo.bar

./Def:
Baz2.quux  Baz.quux  Ghi

./Def/Ghi:
Bar2.foo  Bar.foo

后的目录布局:

.:
Abc  Def

./Abc:
AbcFoo2.bar  AbcFoo.bar

./Def:
DefBaz2.quux  DefBaz.quux  Ghi

./Def/Ghi:
DefGhiBar2.foo  DefGhiBar.foo

其他提示

的最佳批处理更名是 MMV

和又见如何做大规模重新命名?

您可以给一个尝试batchrename: http://batchrename.foryoursoft.com/

可以通过使用嵌套的for循环在命令行..尽管实现这种重命名有点难看:

for /D %d in (*) do for %f in ("%d\*.*") do move "%f" "%d\%~nd%~nf"

如果要放在一个批处理脚本上述命令,重复每个字符%一次。

for /D %%d in (*) do for %%f in ("%%d\*.*") do move "%%f" "%%d\%%~nd%%~nf"

要理解上面的命令,在命令行协商FOR /?

我觉得批次是如此神秘,这些天我需要以某种方式保存BAT智慧...: - )

我在开玩笑:-) ..但命令不工作,我已经试过了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top