batch-file - 如何批量重命名文件为文件夹名称+递增的数字?我收到重复名称错误
问题描述
我一直在尝试创建一个批处理文件来将我的文件重命名为:
“文件夹名_01.jpg、文件夹名_02.jpg等……”
但我的输出将第一个文件重命名为“%~dp00.jpg”,其余的返回错误
“存在重复的文件名,或找不到文件”
我的代码:
@echo off
set /a count = 0
for %%a in (*.jpg) do (
set /a count+=1
ren "%%a" "%%~dp0_%count%.jpg"
)
pause
我不明白为什么 count 变量没有从每个条目中添加 1 并且文件被重命名为“%~dp0 + count + .ext”而不是它的“文件夹名 + count + .ext”
解决方案
您的问题可以通过在嵌套 for 循环中使用延迟扩展来处理递增变量,以捕获目录名称。
例子:
@Set "count=0"
@For /F "Delims=" %%I In ('Dir /B/S/A-D-S "*.jpg" 2^>NUL')Do @(
For %%J In ("%%~pI.")Do @(Set /A count+=1
SetLocal EnableDelayedExpansion
Ren "%%I" "%%~nxJ_!count!%%~xI"
EndLocal))
@Pause
推荐阅读
- javascript - 正则表达式 - 至少 6 个字符,包括 2 个特殊字符
- python - Python 和 Dynamics CRM:使用 Web api
- c# - 将结果添加到 TestCaseSource
- sql-server - 如何添加基于子字符串值返回的记录或回车
- c++ - libc.so.6:添加符号时出错:命令行中缺少 DSO
- bash - read -r -a BUILD_ARGS_ARRAY <<< "$@" 在 bash 中是什么意思?
- html - HTML表格自动扩展最后一列以占据剩余宽度
- unity3d - 可以使用 MRKT 和 HTC VIVE 来创建增强现实应用程序吗?
- java - 使用 Platform.runLater 更改非 javafx 线程中的按钮文本
- sql-server - 如何避免此处出现过度拨款警告?或者我什至需要担心它?