你们中的任何人都可以帮助我解决我在多个同名文件中放置在单独文件夹中的问题。
文件夹以数字命名,但里面的文件名为 index.XXXX - 其中 XXXX 可以是 .jpg 或 .html 或 .pdf。
我想制作一个“程序”,可以将所有“索引”文件重命名为与它们所在的文件夹相同的名称。
文件夹以 6 位数字命名 - 全部不同。
希望完成此操作后,我想将所有重命名的文件移动到一个新的单个文件夹中,这样我会更容易看到整个内容。
期待阅读您的答案。
问问题
31368 次
4 回答
8
@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"
于 2013-04-28T21:33:17.733 回答
6
如果您希望 GUI 完成上述所有操作,请使用批量文件重命名。
打开它,浏览到您的文件夹。现在检查选择选项卡中的子文件夹选项。将列出文件夹下的所有文件。在浏览器中选择文件。
在File选项卡中,将第一个选项从Keep切换到Remove。然后转到附加文件夹名称选项卡并为属性名称设置选项前缀。单击重命名以完成。
这样做的好处是它可以预览您的文件将被重命名的内容。
于 2014-04-11T11:03:01.477 回答
1
我同意 Brandon 的观点,即批量文件重命名 ( http://www.bulkrenameutility.co.uk/ ) 是在 Windows 下使用目录名称重命名/后缀文件的好方法。
要将所有重命名的文件复制到一个公共目录,请使用 Windows 资源管理器搜索所有带有通配符的文件名(例如 readme*.txt)。然后选择所有找到的文件,选择复制,导航到目标目录,然后粘贴。
于 2016-08-03T15:22:58.983 回答
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"
)
)
)
)
)
- 获取 'index.*' 文件
- 过滤指定的扩展名
- 找到直接目录名称
- 检查它是否不超过 6 个字符
set
如果是 6 位名称,则尝试将变量设置为 1000000..1999999- 如果
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"
于 2013-04-28T22:53:47.847 回答