如何在我的文件转换脚本中包含子文件夹?

J.G*_*ard 5 vbscript batch-file

我修改了一个 vbscript 和批处理文件,它允许我将当前目录中的 HTML 文件转换为 xlsx 文件,如下所示

脚本:

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Please specify the source and the destination files"
    Wscript.Quit
End If

xlsx_format = 51

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, xlsx_format

oBook.Close False
oExcel.Quit
Run Code Online (Sandbox Code Playgroud)

批处理文件:

FOR /f "delims=" %%i IN ('DIR *.HTM* /b') DO to-xlsx.vbs "%%i" "%%~ni.xlsx"
del *.HTM /q
Run Code Online (Sandbox Code Playgroud)

通过包含/s在批处理文件中,我可以转换子文件夹中的文件,但它们仍保存在父目录中,我无法弄清楚如何更改它?

src_fileC:\Converter\Subfolder\FileName并且dest_fileC:\Converter\FileName对于子文件夹中的文件

Ani*_*c17 5

你需要改变

FOR /f "delims=" %%i IN ('DIR *.HTM* /b') DO to-xlsx.vbs "%%i" "%%~ni.xlsx"
Run Code Online (Sandbox Code Playgroud)

FOR /R %%i IN (*.HTM* ) DO to-xlsx.vbs "%%i" "%%~ni.xlsx"
Run Code Online (Sandbox Code Playgroud)

for /r表示Recursive,因此您要求 CMD 循环每个文件及其子目录,但仅当它们包含一个.htm*文件时。

  • 尝试使用`%%~dpi`,这意味着获取所选文件的目录。它将像`FOR /R %%i IN (*.HTM* ) DO to-xlsx.vbs "%%i" "%%~dpni.xlsx"` (5认同)