带有vbs脚本的文件名

时间:2014-08-25 06:38:15

标签: vbscript

我想添加一个charecter文件名。 例如

123456.jpg --> 1234506.jpg 
ABCDEF.jpg --> ABCDE0F.jpg 

原始文件6 charecters新文件名7 charecter(我想为所有文件名添加0请注意0个字符后有一个字符。)

此过程batch file or vbs

此致

2 个答案:

答案 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