根据文件夹名称重命名文件

时间:2014-09-18 09:50:21

标签: batch-file for-loop rename dos prefix

我使用以下脚本使用字符串“Application”重命名(前缀)子文件夹中的文件。

pushd "%temporarydirectory%"
for /r %%j in (*) do (
rename "%%j" "Application - %%~nxj"
)
Popd

例如:

中的文件

C:\ temp \ Lodgements \ 10 Smith Street

10001.doc
10002.doc

重命名为:

Application - 10001.doc
Application - 10002.doc

我想要做的是更改脚本,以便使用包含它们的文件夹的名称重命名(带前缀)文件。例如:

中的文件

C:\ temp \ Lodgements \ 10 Smith Street

10001.doc
10002.doc

重命名为:

10 Smith Street - 10001.doc
10 Smith Street - 10002.doc

此致

乔治·麦肯齐小猫

1 个答案:

答案 0 :(得分:1)

pushd "%temporarydirectory%" && (
    for /r /d %%a in (.) do for %%b in ("%%~fa\*") do (
        echo ren "%%~fb" "%%~nxa - %%~nxb"
    rem Magoo's tickle begin
    echo "%%~nxb"|FINDSTR /l /c:"%%~nxa - " >NUL&IF ERRORLEVEL 1 echo ren "%%~fb" "%%~nxa - %%~nxb"
    rem Magoo's tickle end
    )
)

对于每个文件夹,对于此文件夹中的每个文件,将文件重命名为文件夹的名称和扩展名,后跟文件的名称和扩展名

(注意rename / ren命令只是为了解体而回显)

Magoo痒痒:如果程序运行,删除名为“10 Smith Street - 10001.doc”的文件将被重新命名为“10 Smith Street - 10 Smith Street - 10001.doc”的可能性,从而扩展建议的答案不止一次......