簡體   English   中英

使用vbs腳本的文件名

[英]File name with vbs scripts

我想添加一個字符文件名。 例如

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

原始文件6 charecters新文件名7 charecter個字符(我要為所有文件名添加0,請注意0個字符后有一個字符。)

對於此過程batch file or vbs

問候,

@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以執行重命名操作

這是使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM