我正在寻找一个脚本(Perl,Python或批处理会很好),它将通过指定的文件树并重命名所有子文件。
例如,Folder1>File1.anytype
变为Folder1>Folder1File1.anytype
。
由于
答案 0 :(得分:2)
你提到了一个批处理文件,这可能意味着你在Windows上(我假设你引用了一个.bat文件)。如果您使用的是unix系统,请试一试:
find . -mindepth 2 -type f -exec sh -c "mv {} \`dirname {}\`/\`dirname {} | sed 's/^\.//' | sed 's/\///g'\`\`basename {}\`" \;
或者,这个Python 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
答案 1 :(得分:1)
最佳批量重命名为mmv。
答案 2 :(得分:0)
您可以尝试批量名称:http://batchrename.foryoursoft.com/
答案 3 :(得分:0)
您可以通过在命令行使用嵌套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 /?
。
我觉得批次是如此神秘,这些天我需要以某种方式保留英美烟草的智慧......: - )
我在开玩笑:-) ..但命令确实有效,我已经尝试过了。
答案 4 :(得分:0)