如何在批处理文件中包含vbscript步骤?

时间:2018-05-02 17:09:29

标签: windows batch-file cmd vbscript

我正在尝试做什么: 我有3个xls文件,我通过电子邮件收到,这样命名(每次更改日期戳):

CDC aaa 01 01 2018.xls
CDC bbb 01 01 2018.xls
CDC ccc 01 01 2018.xls

我想:

  • 将它们转换为csv
  • 将它们命名为:aaa.csv,bbb.csv,ccc.csv

到目前为止,我的脚本失败了:

@ECHO OFF
setlocal enableextensions enabledelayedexpansion


for %%F in ("*.xls") do ( 
    REM get filename only
    set tmp=%%~F

    REM look for aaa
    echo.!tmp! | findstr /i "aaa" 1>nul
    if errorlevel 1 (
        echo. Not aaa.
    ) ELSE (
        echo. Found aaa
        set fileout=aaa.csv
    )

    REM look for bbb
    echo.!tmp! | findstr /i "bbb" 1>nul
    if errorlevel 1 (
        echo. Not bbb.
    ) ELSE (
        echo. Found bbb.
        set fileout=bbb.csv
    )

    REM look for ccc
    echo.!tmp! | findstr /i "ccc" 1>nul
    if errorlevel 1 (
        echo. Not ccc.
    ) ELSE (
        echo. Found ccc.
        set fileout=ccc.csv
    )
    REM convert and rename file
    xlstocsv.vbs "!tmp!" "!fileout!"
)

当我运行此操作时,出现 Windows Script Host 错误消息:

Script: C:\[bla]\xlstocsv.vbs
Line: 17
Char: 1
Error: The file could not be accessed. Try one of the following:
- Make sure folder exists
- Make sure the folder that contains the file is not read-only
- Make sure the file name does not contain anu of the following characters: < > ? [ ] : CDC aaa 01 01 2018.xls or *
- Make sure the file/path name doesn't contain more than 218 characters
- Code: 800A03EC
- Source: Microsoft Excel

我可以确认文件/文件夹不是只读的,我可以确认路径/文件名中没有特殊字符,路径也不超过218个字符。

我还可以确认excel文件没有任何损坏或损坏。

我还可以说,当我看到错误消息时,如果我尝试打开excel中的3个文件中的任何一个(不仅仅是我得到错误的那个),excel会抛出与上面完全相同的错误。

如果我运行此脚本,它可以正常工作:

setlocal enableextensions enabledelayedexpansion

for %%F in ("*.xls") do ( 
    xlstocsv.vbs "%%~nF.xls" "%%~nF.csv"
)

但是此版本的脚本不会将我的文件重命名为所需的文件名,只需更改扩展名。

这是VBScript:

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> <csv destination file>"
    Wscript.Quit
End If

csv_format = 6

Set objFSO = CreateObject("Scripting.FileSystemObject")

src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1))

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)

oBook.SaveAs dest_file, csv_format

oBook.Close False
oExcel.Quit

0 个答案:

没有答案