I need to convert some xls files into xlsx files. I can successfully convert one xls file into xlsx by running this command into cmd prompt (windows):
ssconvert inputFileName.xls outputFileName.xlsx
(ssconvert is a Gnumeric’s command-line utility that can convert between different spreadsheet file formats)
I’d like to write a batch file that FOR EACH file in a specified directory runs the command I wrote above, using the current file name both for input and for output filename.
For example, if I have this set of files:
c:\directory\file1.xls
c:\directory\file2.xls
c:\directory\file3.xls
the output should be
c:\directory\file1.xlsx
c:\directory\file2.xlsx
c:\directory\file3.xlsx
so the batch pseudo code should be something like
directory = c:\directory\
for (fileName in directory)
ssconvert fileName.xls fileName.xlsx
Can anyone help me?
a couple have people have asked me to explain this, so:
Part 1:
for /r %%v in (*.xls)This part returns an array of files in the current directory that have the
xlsextension. The%%may look a little curious. This is basically the special%character from command line as used in %PATH% or %TEMP%. To use it in a batch file we need to escape it like so:%%PATH%%or%%TEMP%%. In this case we are simply escaping the temporary variablev, which will hold our array of filenames.We are using the
/rswitch to search for files recursively, so any matching files in child folders will also be located.Part 2:
do ssconvert "%%v" "%%vx"This second part is what will get executed once per matching filename, so if the following files were present in the current folder:
c:\temp\mySheet.xls,c:\temp\mySheet_yesterday.xls,
c:\temp\mySheet_20160902.xls
the following commands would be executed:
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"