【发布时间】:2018-07-30 10:40:44
【问题描述】:
我正在使用批处理文件将 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,它需要整个文件路径)
有人可以帮帮我吗?我认为这对于更有经验的人来说应该相当简单
谢谢!
【问题讨论】:
-
见
dir /?。你是用For来遍历dir的输出,所以for /f是对的。 -
CatCat:虽然它不适用于子文件夹,但它只会遍历顶级文件夹中的文件
-
@CatCat:多亏了 dir /?你的帖子建议,我想我可以这样做: FOR /f "delims=" %%i IN ('DIR .xls /b /s') DO ExcelToCsv.vbs "qrOUTPUT1" "% %i" "%%i.csv" 现在甚至循环通过子文件夹,但它现在具有 .xlsb.csv 作为文件类型:P 所以我仍然可以改进,只是不知道如何......
-
在
For阅读帮助的结尾。 -
为什么你会选择在你的第一组代码中使用 FOR 变量修饰符而不是第二组?
标签: windows shell batch-file command-line cmd