Мне нужно конвертировать некоторые файлы XLS в XLSX файлов. Я могу успешно конвертировать файл XLS в XLSX-файл, выполнив следующую команду в командную строку (в Windows):
ssconvert inputFileName.xls outputFileName.xlsx
(ssconvert является Gnumeric, в'командная строка с программой, которая может преобразовать между различными таблицами форматы файлов)
Я'd, как написать пакетный файл, который для каждого файла в указанной директории запускает команду я написал выше, используя текущие имя файла для ввода и для вывода имени файла.
Например, если у меня есть этот набор данных:
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: к /р %%в (*.формате xls) `
Эта часть возвращает массив файлов в текущем каталоге с расширением в с XLS
. В %%
может выглядеть немного любопытно. Это обычно символ специального %
из командной строки, используемый в %путь% или %Temp%. Чтобы использовать его в пакетный файл, мы должны защитить его, как так: %%путь%%
или %%темп%%
. В этом случае мы просто выбираясь из временной переменной "в", который проведет наш массив имен файлов.
Мы используем переключатель /R
, чтобы искать файлы рекурсивно, так что соответствующие файлы в папках ребенок также будет располагаться.
Часть 2: не ssconvert " ПО%%в" и " по%%ЧХ"`в
Это вторая часть того, что будет выполняться один раз в комбинационной именем, так что если следующие файлы присутствуют в текущей папке:
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"
На самом деле это довольно легко, так как Windows Виста. Microsoft добавила команду FORFILES
в вашем случае
forfiles /p c:\directory /m *.xls /c "cmd /c ssconvert @file @fname.xlsx"
единственная странная вещь с этой команды заключается в том, что forfiles автоматически добавляет двойные кавычки файл @и @имени. но она должна работать в любом случае
вы можете запустить что-то вроде этого (вставьте ниже код .летучая мышь, или если вы хотите запустить interractively заменить %%
на %
:
for %%i in (c:\directory\*.xls) do ssconvert %%i %%i.xlsx
Если вы можете запустить PowerShell это будет :
Get-ChildItem -Path c:\directory -filter *.xls | foreach {ssconvert $($_.FullName) $($_.baseName).xlsx }
Я делаю подобную вещь, чтобы скомпилировать все файлы с в каталоге. <БР/> для перебора файлов в другой каталог это попробовать. <БР/>
set codedirectory=C:\Users\code
for /r %codedirectory% %%i in (*.c) do
( some GCC commands )