フォルダーの名前を一括変更しますか?


0

これはおそらく非常に単純な解決済みタスクですが、次のとおりです。

さまざまな形式の電子書籍を含む一連のフォルダーがあります。フォルダー名の形式は次のとおりです。

\Lastname, Firstname (n books)\

各フォルダーの名前を単純に変更したい

\Firstname Lastname\

バッチファイルを使用するとかなり簡単にできると思いますが、文字列解析を行わなければならなかったので非常に長い時間を要したので、方法を思い出せません。

助けて?Windows 7を使用しています。


どのOSを使用していますか?
ポール

@ポール:そうですね、それは役に立つ情報でしたね。;)は、Windows 7
マーガレット

回答:


3

スペースがあなたの例と一致していると仮定すると(つまり、姓と名にスペースがない)、これは動作するはずです。

@echo off

setlocal EnableDelayedExpansion

for /f "tokens=1,2,*" %%a in ('dir /a:d /b') do (
    set lastname=%%a
    set lastname=!lastname:~0,-1!
    ren "%%a %%b %%c" "%%b !lastname!"
)

endlocal

単にスペースで分割し、バッチファイルと同じディレクトリ内のすべてのディレクトリの姓からコンマを削除します。

名前にスペースを含めることができる場合、区切り記号の操作が必要です。私はそれをいじります。

編集:

さあ。区切り文字をいじるということは、Firstnameが前後にスペースで囲まれていたことを意味します。そのため、本質的に、aがLastname続き、aが,続き、aが Firstname 続き(whateverます。Firstnameの周りのスペースは重要です(そしてあなたの例の中にあります)。名前内のスペースは正常に機能します。

@echo off

setlocal EnableDelayedExpansion

for /f "tokens=1,2,* delims=,(" %%a in ('dir /a:d /b') do (
    set firstname=%%b
    set firstname=!firstname:~1,-1!
    ren "%%a,%%b(%%c" "!firstname! %%a"
)

endlocal

echo前にを置いてテストが実行されren、期待どおりに動作することを確認できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.