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

Posted

技术标签:

【中文标题】如何在我的文件转换脚本中包含子文件夹?【英文标题】:How do include sub-folders in my file conversion script? 【发布时间】:2020-11-05 03:16:07 【问题描述】:

我已经修改了一个 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

批处理文件:

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

通过在批处理文件中包含/s,我可以转换子文件夹中的文件,但它们仍然保存到父目录,我不知道如何更改它?

src_fileC:\Converter\Subfolder\FileNamedest_fileC:\Converter\FileName 子文件夹中的文件

【问题讨论】:

【参考方案1】:

你需要改变

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

FOR /R %%i IN (*.HTM* ) DO to-xlsx.vbs "%%i" "%%~ni.xlsx"

for /r 表示 递归,因此您要求 CMD 循环每个文件及其子目录,但前提是它们包含 .htm* 文件。

【讨论】:

感谢您的回复,这工作但仍将转换后的文件保存在父文件夹而不是子文件夹中? 试试%%~dpi,意思是获取选中文件的目录。就像FOR /R %%i IN (*.HTM* ) DO to-xlsx.vbs "%%i" "%%~dpni.xlsx" 如果您能帮助@Anic17,我还有其他疑问?我正在尝试使用 Call Shell(PathCrnt &amp; "\Convert Files.bat", vbNormalFocus) 从 vba 运行批处理文件,这会导致批处理文件使用默认目录 U:\ 而不是当前目录,你知道为什么会这样吗? 尝试在批处理文件的开头添加cd /d "%~dp0",因为它会CD到批处理文件所在的目录。 太棒了,非常感谢您的快速回复和正确的解决方案。

以上是关于如何在我的文件转换脚本中包含子文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HTML 中包含 SCSS 文件 [关闭]

在项目中包含子模块 .xcdatamodeld 文件

有没有办法告诉 Visual Studio 在发布的结果中包含子文件夹的配置文件?

如何转换文本文件以便放置在我的 acharengine 数组中?

PCD文件格式转换脚本

如何将悖论转换为 Excel