用于将许多.xlsx文件更改为.csv

时间:2015-06-24 20:17:14

标签: excel loops csv batch-file vbscript

我有一个包含许多子文件夹(1000+)的文件夹,在子文件夹中有一些excel文件,格式为.xlsx。我想从主文件夹运行批处理脚本,该文件夹进入每个子文件夹并将每个.xlsx Excel文件更改为.csv Excel文件。

文件系统的格式:

MainFolder
---subfolder1
----->file1.xlsx
---subfolder2
----->file2.xlsx

从这个帖子:Convert XLS to CSV on command line,我发现我不能只将每个.xlsx重命名为.csv,所以我制作了ExceltoCSV.vbs文件(修改后的ScottF答案,第二个下来)。我的理解是我可以在批处理文件中创建一个for循环来为每个子文件夹运行ExceltoCSV.vbs。以下代码行是我尝试过的,但它没有用。通常说找不到* .xlsx文件。

for /R %%F in ("C:\MainFolder") do cscript ExceltoCSV.vbs *.xlsx *.csv

还试过这个:

for /d /r "C:\MainFolder" %%F in (.) do cscript ExceltoCSV.vbs "%%F\*.xlsx" *.csv

错误讯息:

C:\MainFolder\ExceltoCSV.vbs(17,1) Microsoft Excel: 'C:\MainFolder\folder1\*.xlsx' could not be found. Check the spelling of the file name, and verify that the file location is correct.

1 个答案:

答案 0 :(得分:0)

从SO获得的VBS脚本只接受一个字符串作为输入。您需要做的是创建一个带有正则表达式模式的循环,该循环模式动态构建这些文件名,然后使用表示每个文件名的输入字符串运行该脚本。伪代码:

for loop (iterate over file names in dir){
set $file_name=$iterated_file_name_from_loop

ExceltoCSV.vbs "$file_name.xlsx" *.csv

}