标题: [代码合集] 如何用批处理使用文件夹名字重命名内部文件 [打印本页]
作者: yhq300 时间: 2022-7-26 10:22 标题: 如何用批处理使用文件夹名字重命名内部文件
各位大佬帮帮忙
我找到了一个代码
@echo off
cd /d "%~dp0"
for /r /d %%A in (*) do (
for %%B in ("%%A\*") do (
ren "%%B" "%%~nxA%%~xB"
)
)
能完成重命中文件夹内一个文件 可是如果有多个文件会提示重复命名 只会更改第一个文件名
大佬们帮我改改 怎么让别的文件加上() 1 2 3 4之类的 成功重命名
因为所有文件都是数字命名 只要能和数字区分开 别的什么后缀都可以
作者: LJY4.0 时间: 2022-7-26 10:57
本帖最后由 LJY4.0 于 2022-7-26 11:00 编辑
是不是以文件夹的名字重命名文件?
作者: flashercs 时间: 2022-7-26 13:27
- @echo off
- cd /d "%~dp0"
- for /r /d %%A in (*) do (
- call :rentemp "%%A"
- )
- pause
- exit /b
-
- :rentemp
- setlocal enabledelayedexpansion
- pushd "%~1"|| goto end
- set n=0
-
- for /f "delims=" %%A in ('2^>nul dir /a-d /b') do (
- if !n! equ 0 (
- set "newname=%~nx1%%~xA"
- ) else (
- set "newname=%~nx1(!n!)%%~xA"
- )
- set /a n+=1
- if not "!newname!"=="%%A" (
- if exist "!newname!" (
- call :getTempName
- @REM echo ren "%%A" "!tempname!"
- >nul 2>nul ren "%%A" "!tempname!" && set "templist[!n!]=%%A/!tempname!/!newname!"
- ) else (
- echo ren "%%A" "!newname!"
- ren "%%A" "!newname!"
- )
- )
- )
- REM 重命名临时列表
- for /f "tokens=1* delims==" %%A in ('2^>nul set templist[') do (
- for /f "tokens=1-3 delims=/" %%C in ("%%B") do (
- echo ren "%%C" "%%E"
- ren "%%D" "%%E"
- )
- )
- popd
- :end
- endlocal
- exit /b
-
- :getTempName
- :loop
- set tempname=~%random%~
- if exist "%tempname%" goto loop
- @REM echo tempname=%tempname%
- exit /b
复制代码
作者: yhq300 时间: 2022-7-26 13:50
是不是以文件夹的名字重命名文件?
LJY4.0 发表于 2022-7-26 10:57
是的
作者: yhq300 时间: 2022-7-26 13:53
flashercs 发表于 2022-7-26 13:27
谢谢大佬 可以用了
作者: Batcher 时间: 2022-7-27 08:33
回复 1# yhq300
参考:批处理字符串、文本常见操作之重命名文件
https://mp.weixin.qq.com/s/_1qzhObTSbc6HRpJy4onhQ
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |