どのように私は、バッチファイルの名前を変更することができますか?
質問
私はそれが指定されたファイルツリーを通過し、すべての子ファイルの名前を変更します(PerlやPythonまたはバッチは大丈夫だろう)スクリプトを探しています。
例えば、Folder1>File1.anytype
がFolder1>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の知恵を維持する必要があり、これらの日を感じる...: - )
私は:-)冗談..しかし、コマンドが作業を行い、私はそれを試してみた。
所属していません StackOverflow