你们中的任何人都可以帮我解决一个问题吗?我有很多同名的文件,放在sperate文件夹中
文件夹以数字命名,但里面的文件名为index.XXXX - 其中XXXX可以是.jpg或.html或.pdf。
我想制作一个'计划'可以重命名所有'索引'文件与其所在文件夹的名称相同。
文件夹以6位数字命名 - 全部不同。
在希望完成之后,我想将所有重命名的文件移动到一个新的单个文件夹,这样我就可以更容易地看到整个内容。
期待阅读您的答案。
答案 0 :(得分:7)
@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"
答案 1 :(得分:3)
如果您希望GUI执行上述所有操作,请使用Bulk File Rename。
打开它,浏览到您的文件夹。现在,检查选择标签中的子文件夹选项。将列出文件夹下的所有文件。在浏览器中选择文件。
在文件标签中,将第一个选项从保留切换为删除。然后转到附加文件夹名称标签,并为属性名称设置选项前缀。单击重命名以完成。
这样做的好处是它可以预览你的文件将被重命名为什么。
答案 2 :(得分:1)
我同意Brandon的说法,批量文件重命名(http://www.bulkrenameutility.co.uk/)是在Windows下使用目录名重命名/后缀文件的好方法。
要将所有重命名的文件复制到公共目录,请使用Windows资源管理器搜索带有通配符的所有文件名(例如,readme * .txt)。然后选择所有找到的文件,选择复制,导航到目标目录,然后粘贴。
答案 3 :(得分:0)
@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"
)
)
)
)
)
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"