我想添加一个charecter文件名。 例如
123456.jpg --> 1234506.jpg
ABCDEF.jpg --> ABCDE0F.jpg
原始文件6 charecters
新文件名7 charecter
(我想为所有文件名添加0请注意0个字符后有一个字符。)
此过程batch file or vbs
此致
答案 0 :(得分:0)
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "delims=" %%a in (
'dir /b /a-d ^|
findstr /r /b
/c:"[^.][^.][^.][^.][^.][^.]\."
/c:"[^.][^.][^.][^.][^.][^.]$"
'
) do (
set "fileName=%%a"
setlocal enabledelayedexpansion
for %%b in ("!filename:~0,5!0!filename:~5!") do endlocal & if not exist "%%~b" echo ren "%%a" "%%~b"
)
这使用dir
命令检索文件列表,使用findstr
进行过滤,只获取文件名中包含6个字符的文件。对于找到的每个文件,将文件名检索到变量中,并完成子串操作以组成新名称。
为了避免文件名中的惊叫问题,我们需要启用延迟扩展来读取变量,但禁用以执行命令。这是第二个for
的原因,启用延迟扩展,读取所需值并将其存储在for
命令可替换参数内,禁用延迟扩展,现在,没有感叹号问题,执行所需命令
ren
命令仅回显给控制台。如果输出正确,请删除echo
以执行重命名操作
答案 1 :(得分:0)
以下是如何使用VBScript和FileSystemObject
完成的。此脚本需要与文件位于同一文件夹中。否则,您必须使用文件的完整路径。
' Files to update...
a = Array("123456.jpg", "ABCDEF.jpg")
With CreateObject("Scripting.FileSystemObject")
For i = 0 To UBound(a)
' Change name. Use first 5 chars, plus "0", plus rest...
.GetFile(a(i)).Name = Left(a(i), 5) & "0" & Mid(a(i), 6)
Next
End With