首页 > 解决方案 > vbs 相当于 \*. (.bat 文件)?

问题描述

我决定重做我的应用程序,我正在将所有 .bat 文件“翻译”成 .vbs 文件,几乎完成了,但下面的 bat 脚本对我来说是个大问题

@ECHO OFF   
move "..\Styles\DropWall\*.jpg" "..\..\chrome\OPCEN\images\WALLPERSONA\TranscodedWallpaper.jpg"     
move "..\Styles\DropWall\*.png" "..\..\chrome\OPCEN\images\WALLPERSONA\TranscodedWallpaper.jpg" 
exit

我已经用它来移动一个已知文件,确定我遗漏了什么

Option Explicit
Dim Fso 
Set Fso= WScript.CreateObject("Scripting.FileSystemObject") 
Fso.MoveFile "..\Styles\DropWall\AB.jpg", "..\..\chrome\OPCEN\images\WALLPERSONA\TranscodedWallpaper.jpg"

标签: vbscript

解决方案


VBScriptFileSystemObject方法没有直接等效的“从源目录复制任何 .jpg 文件作为目标目录中的此特定输出文件”。您可以将所有.jpg 文件从给定的源目录移动到给定的目标目录(无需重命名文件):

Set fso = CreateObject("Scripting.FileSystemObject") 
fso.MoveFile "C:\source\*.jpg", "C:\destination\"

但是要移动任何具有匹配扩展名的文件,您需要这样的东西:

Set fso = CreateObject("Scripting.FileSystemObject") 
For Each f In fso.GetFolder("C:\source").Files
    If LCase(fso.GetExtensionName(f)) = "jpg" Then
        f.Copy "C:\destination\bar.jpg", True
        f.Delete
    End If
Next

Copy建议使用和的组合Delete,因为Move(或MoveFile就此而言)不允许替换现有文件,这意味着如果源文件夹中有多个匹配文件,则移动第二个文件会引发错误。


推荐阅读