本帖最后由 kfk 于 2018-1-13 00:49 编辑
用(剪贴板中的)文字(批量)重命名.vbs
说明:
若剪贴板中无文字,则询问,以免莫明其妙。
处理非法字符(用的是简单的Replace语句,一符一行,便于自改):
▲默认将 \/:*?"<>| 替换成 全角,以接近原貌。
▲默认将 Tab符 替换成 全角空格。
▲默认将 换行符 替换成 句号。这样你可以一次复制多行文字,自动并成一行。
支持批量。
支持 文件与文件夹并存 的情况。
重名会加序号。
▲默认添加 .(2) 形式(◆会影响到 无扩展名的文件,可据情自改)。
会跳过所有合格的项(即,能不改就不改)。
下载vbs:
代码:
- Set oArgs = WScript.Arguments
- If oArgs.Count = 0 Then WScript.Quit
- sText = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
- If IsNull(sText) Then
- sText = InputBox("剪贴板中无文字", WScript.ScriptName)
- If sText = "" Then WScript.Quit
- End If
- sText = Replace(sText, "\", "\")
- sText = Replace(sText, "/", "/")
- sText = Replace(sText, ":", ":")
- sText = Replace(sText, "*", "*")
- sText = Replace(sText, "?", "?")
- sText = Replace(sText, """", "”")
- sText = Replace(sText, "<", "<")
- sText = Replace(sText, ">", ">")
- sText = Replace(sText, "|", "|")
- sText = Replace(sText, vbTab, " ")
- sText = Replace(sText, vbCrLf, "。")
- sText = Replace(sText, vbCr, "。")
- sText = Replace(sText, vbLf, "。")
- Set oFSO = CreateObject("Scripting.FileSystemObject")
- For i = 0 To oArgs.Count - 1
- If oFSO.FileExists(oArgs.Item(i)) Then
- sub_Rename oFSO.GetFile(oArgs.Item(i)), "." & oFSO.GetExtensionName(oArgs.Item(i))
- ElseIf oFSO.FolderExists(oArgs.Item(i)) Then
- sub_Rename oFSO.GetFolder(oArgs.Item(i)), ""
- End If
- Next
- Sub sub_Rename(oItem, sExtName)
- sNameOld = oFSO.GetFileName(oArgs.Item(i))
- Do
- If j>0 Then sN = ".(" & j+1 & ")" '◆加序号
- sNameNew = sText & sN & sExtName
- '▼跳过所有合格的项,能不改就不改:
- If sNameNew = sNameOld Then Exit Sub
- j=j+1
- sPath = oFSO.GetParentFolderName(oArgs.Item(i)) & "\"
- Loop While oFSO.FileExists(sPath & sNameNew) Or oFSO.FolderExists(sPath & sNameNew)
- oItem.Name = sNameNew
- End Sub
复制代码
|