Дополнительно
пакетный скрипт - выполнить команду для каждого файла в каталоге
Мне нужно конвертировать некоторые файлы 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
Может кто-нибудь помочь мне?
35
4
несколько людей просили меня объяснить это так:
Часть 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 автоматически добавляет двойные кавычки файл @и @имени. но она должна работать в любом случае
вы можете запустить что-то вроде этого (вставьте ниже код .летучая мышь, или если вы хотите запустить interractively заменить
%%
на%
:Если вы можете запустить PowerShell это будет :
Я делаю подобную вещь, чтобы скомпилировать все файлы с в каталоге. <БР/> для перебора файлов в другой каталог это попробовать. <БР/>