我需要将一些 xls 文件转换为 xlsx 文件。我可以通过在 cmd 提示符(Windows)中运行此命令成功地将一个 xls 文件转换为 xlsx:
ssconvert inputFileName.xls outputFileName.xlsx
(ssconvert 是 Gnumeric 的命令行实用程序,可以在不同的电子表格文件格式之间进行转换)
我想编写一个批处理文件,对于指定目录中的每个文件运行我上面编写的命令,使用当前文件名作为输入和输出文件名。
例如,如果我有这组文件:
c:\directory\file1.xls
c:\directory\file2.xls
c:\directory\file3.xls
输出应该是
c:\directory\file1.xlsx
c:\directory\file2.xlsx
c:\directory\file3.xlsx
所以批处理伪代码应该类似于
directory = c:\directory\
for (fileName in directory)
ssconvert fileName.xls fileName.xlsx
有人可以帮助我吗?
最佳答案
for /r %%v in (*.xls) do ssconvert "%%v" "%%vx"
有人要求我解释一下,所以:
第 1 部分:for/r %%v in (*.xls)
此部分返回当前目录中具有 xls
扩展名的文件数组。 %%
可能看起来有点好奇。这基本上是命令行中 %PATH% 或 %TEMP% 中使用的特殊 %
字符。要在批处理文件中使用它,我们需要像这样转义它:%%PATH%%
或 %%TEMP%%
。在这种情况下,我们只是转义临时变量 v
,它将保存我们的文件名数组。
我们使用 /r
开关递归搜索文件,因此子文件夹中的任何匹配文件也将被定位。
第 2 部分:do ssconvert "%%v""%%vx"
第二部分是每个匹配的文件名执行一次,因此如果当前文件夹中存在以下文件:
c:\temp\mySheet.xls,
c:\temp\mySheet_yesterday.xls,
c:\temp\mySheet_20160902.xls
将执行以下命令:
ssconvert "c:\temp\mySheet.xls""c:\temp\mySheet.xlsx"
ssconvert "c:\temp\mySheet_yesterday.xls""c:\temp\mySheet_yesterday.xlsx"
ssconvert "c:\temp\mySheet_20160902.xls""c:\temp\mySheet_20160902.xlsx"
关于batch-file - 批处理脚本 - 对目录中的每个文件运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237548/