如何使用批处理文件将文件夹中的文件重命名为文件夹名称

问题描述 投票:0回答:5


你们中的任何人都可以帮助我解决许多同名文件放置在单独文件夹中的问题吗?
文件夹以数字命名,但里面的文件被命名为index.XXXX - 其中XXXX可以是.jpg或.html或.pdf。
我想制作一个“程序”,可以将所有“索引”文件重命名为与它们所在的文件夹相同的名称。
这些文件夹以 6 位数字命名 - 全部不同。
希望完成此操作后,我想将所有重命名的文件移动到一个新的单个文件夹中,这样我就可以更轻松地查看全部内容。
期待阅读您的答案。

file batch-file rename move directory
5个回答
9
投票
@Echo OFF

FOR /D /R %%# in (*) DO (
    PUSHD "%%#"
    FOR %%@ in ("index*") DO (
        Echo Ren: ".\%%~n#\%%@" "%%~n#%%~x@"
        Ren "%%@" "%%~n#%%~x@"
    )
    POPD
)

Pause&Exit

测试的文件夹结构:

C:\Users\Administrador\Desktop\Nueva carpeta (3)\123321
C:\Users\Administrador\Desktop\Nueva carpeta (3)\123321\Index.txt

C:\Users\Administrador\Desktop\Nueva carpeta (3)\123456
C:\Users\Administrador\Desktop\Nueva carpeta (3)\123456\Index.php

C:\Users\Administrador\Desktop\Nueva carpeta (3)\123456\000000
C:\Users\Administrador\Desktop\Nueva carpeta (3)\123456\000000\Index.css

C:\Users\Administrador\Desktop\Nueva carpeta (3)\654321
C:\Users\Administrador\Desktop\Nueva carpeta (3)\654321\Index.html

C:\Users\Administrador\Desktop\Nueva carpeta (3)\654321\666999
C:\Users\Administrador\Desktop\Nueva carpeta (3)\654321\666999\Index.jpg

输出:

Ren: ".\123321\Index.txt"      "123321.txt"
Ren: ".\123456\Index.php"      "123456.php"
Ren: ".\654321\Index.html"     "654321.html"
Ren: ".\000000\Index.css"      "000000.css"
Ren: ".\666999\Index.jpg"      "666999.jpg"

7
投票

如果您希望 GUI 执行上述所有操作,请使用 批量文件重命名

打开它,浏览到您的文件夹。现在检查选择选项卡中的子文件夹选项。将列出文件夹下的所有文件。在浏览器中选择文件。

文件选项卡中,将第一个选项从保留切换到删除。然后转到“附加文件夹名称”选项卡并为属性“名称”设置选项“前缀”。单击“重命名”即可完成。 这样做的好处是,它可以向您显示文件将被重命名的预览。 我同意 Brandon 的观点,即批量文件重命名 (

http://www.bulkrenameutility.co.uk/

) 是在 Windows 下使用目录名称重命名/后缀文件的好方法。


1
投票

@ECHO OFF SETLOCAL enabledelayedexpansion SET startfrom=c:\sourcedir SET destdir=c:\destdir FOR /f "delims=" %%i IN ('dir /s /b "%startfrom%\index.*"') DO ( FOR %%e IN (jpg html pdf) DO IF /i .%%e==%%~xi ( FOR %%d IN ("%%~dpi.") DO ( SET "var=%%~nxd" IF "!var:~6!"=="" ( SET "var=" SET /a var=1%%~nxd 2>NUL IF DEFINED var IF !var! geq 1000000 IF !var! leq 1999999 ( ECHO MOVE "%%i" "%destdir%\%%~nxd%%~xi" ) ) ) ) )

获取“index.*”文件

0
投票
过滤指定的扩展名
找到直接目录名称
  • 检查长度是否不超过6个字符
  • 尝试将变量
  • set
  • 设置为1000000..1999999(如果是6位数字名称)
  • 如果成功
  • ECHO
  • 移动命令(删除ECHO关键字来执行移动)
    
    
    
  • 带注释的测试结构:
  • c:\sourcedir\index.pdf                not 6-digit dir
    c:\sourcedir\000000\index.jpg
    c:\sourcedir\000009\index.css         extension not specified
    c:\sourcedir\000009\index.html
    c:\sourcedir\000009\index.jpg
    c:\sourcedir\000009\index.pdf
    c:\sourcedir\000009\index.txt         extension not specified
    c:\sourcedir\010+39\index.txt         not 6-digit dir
    c:\sourcedir\12345\index.jpg          not 6-digit dir
    c:\sourcedir\1234567\index.jpg        not 6-digit dir
    c:\sourcedir\123x56\index.jpg
    c:\sourcedir\50000-0000\index.jpg     not 6-digit dir
    c:\sourcedir\5000000000\index.jpg     not 6-digit dir
    c:\sourcedir\999-99\index.jpg         not 6-digit dir
    c:\sourcedir\999999\index.jpg
    c:\sourcedir\a\index.jpg              not 6-digit dir
    c:\sourcedir\yellow\index.jpg         not 6-digit dir
    
  • 结果:

MOVE "c:\sourcedir\000000\index.jpg" "c:\destdir\000000.jpg" MOVE "c:\sourcedir\000009\index.html" "c:\destdir\000009.html" MOVE "c:\sourcedir\000009\index.jpg" "c:\destdir\000009.jpg" MOVE "c:\sourcedir\000009\index.pdf" "c:\destdir\000009.pdf" MOVE "c:\sourcedir\999999\index.jpg" "c:\destdir\999999.jpg"


对于任何发现移动到父文件夹的人,您可以将其用于您的批次系列。将其放入您想要将子文件夹文件移动到的父文件夹中。

@Echo OFF
FOR /D /R %%# in (*) DO (
    PUSHD "%%#"
    FOR %%@ in (*) DO (
        Echo Moving: "%%~n#\%%@" "%%~n#\"   
        Echo "\%%#"\"%%@" 
        move "%%#"\"%%@" C:\Docs
    )
    POPD
)

Pause&Exit

0
投票

干杯,

尤里尔·约翰

右键单击文件夹中的第一个文件,然后单击“重命名”。 输入文件的新名称“tiny Fishing”,然后按键盘上的 Tab 键。 继续输入文件名并按 Tab 移至下一个文件,直到所有文件都被重命名。

© www.soinside.com 2019 - 2024. All rights reserved.