どのように私は、バッチファイルの名前を変更することができますか?

StackOverflow https://stackoverflow.com/questions/718987

  •  23-08-2019
  •  | 
  •  

質問

私はそれが指定されたファイルツリーを通過し、すべての子ファイルの名前を変更します(PerlやPythonまたはバッチは大丈夫だろう)スクリプトを探しています。

例えば、Folder1>File1.anytypeFolder1>Folder1File1.anytypeなる。

おかげ

役に立ちましたか?

解決

あなたはおそらく、あなたは(私はあなたが.batファイルを参照してくださいと仮定)は、Windows上にあることを意味し、バッチファイルを言及します。 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

他のヒント

最高のバッチRenamerのは、 MMVですのます。

名前の変更ですか も参照>

あなたはbatchrenameに試してみることができます: http://batchrename.foryoursoft.com/する

あなたは少し醜いとはいえ...コマンドラインでループのために、ネストされたを使用することによって、このような名前の変更を達成することができます:

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の知恵を維持する必要があり、これらの日を感じる...: - )

私は:-)冗談..しかし、コマンドが作業を行い、私はそれを試してみた。

scroll top