在CMD批处理文件中包含子文件夹

时间:2018-07-30 10:40:44

标签: windows shell batch-file command-line cmd

我正在使用批处理文件将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时,它将整个文件路径)

有人可以帮我吗?我认为对于经验丰富的人来说,这应该很简单

谢谢!

1 个答案:

答案 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