我正在使用批处理文件将XLSB文件转换为CSV-从此处开始: https://stackoverflow.com/a/11252731/9403175
太好了,但我也想包括子文件夹。我有0个编写批处理文件的经验,所以我只是复制了它(并为工作表名称添加了一个额外的参数)。
我正在使用的代码:
FOR /f "delims=" %%i IN ('DIR *.xls* /b') DO ExcelToCsv.vbs "qrOUTPUT1" "%%i" "%%~ni.csv"
我在Google上搜索到您应该使用FOR / R而不是FOR / F,但这是行不通的。
我尝试对其进行一些修改,并且还提出了以下建议:
FOR /f "delims=" %%i IN ('DIR *.xls* /b /s') DO ExcelToCsv.vbs "qrOUTPUT1" "%%i" "%%i.csv"
另一方面,此版本也通过子文件夹循环,但错误地将文件另存为*.xlsb.csv
,而不是仅保存* .csv(我猜最后一个参数中没有~n
时,它将整个文件路径)
有人可以帮我吗?我认为对于经验丰富的人来说,这应该很简单
谢谢!
答案 0 :(得分:0)
似乎您使查询有点复杂。您不需要执行dir /S
函数,因为for /R
会为您递归执行。
for /R %%i in (*.xlsb) do ExcelToCsv.vbs "qrOUTPUT1" "%%i" "%%~dpni.csv"
运行cmd.exe
并键入for /?
时,滚动到变量引用,您将看到:
%~nI - expands %I to a file name only
这将从名称中去除扩展名,因此在我的示例中,我只做%%~ni.csv