我有一个包含许多子文件夹(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.
答案 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
}