标题: [文件操作] [已解决]批处理如何读取EXCEL内容给指定目录下的pdf文件名加上? [打印本页]
作者: liaoguinan 时间: 2024-10-23 21:50 标题: [已解决]批处理如何读取EXCEL内容给指定目录下的pdf文件名加上?
本帖最后由 liaoguinan 于 2024-10-24 20:32 编辑
如图读取EXCEL内容,给PDF文件加上对应的名称
作者: idwma 时间: 2024-10-24 12:18
- #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
- $fn='aaaaaa.xlsx'
- $fd='d:\测试测试\*.pdf'
- $a=new-object -com excel.application
- $b=$a.workbooks.open("$(dir $fn)")
- $c=$b.sheets.item(1)
- $d=$c.usedrange.cells.value()
- $a.quit()
- $i=$d.length
- $e=@{}
- 1..$i|%{$e[($d[$_,1] -split '-| ')[1]]=$d[$_,1]}
- dir $fd|%{
- $f=$e[[string][int]$_.basename]
- if($f){ren $_ ($f+$_.Extension)}
- }
复制代码
作者: aloha20200628 时间: 2024-10-24 17:15
本帖最后由 aloha20200628 于 2024-10-24 17:19 编辑
回复 1# liaoguinan
先调用excel外部接口将*.xls*电子表格文件转为*.csv文本文件,然后就是批处自己的功夫了...免去了用vba在电子表格里反复折腾...
以下代码存为 test.bat 其中第2-3行中的目标文件和路径均由楼主自定义...
- @set @x=1 /* &@echo off &setlocal
- set "xF=d:\测试\测试.xls"
- set "pD=d:\测试"
- cscript /e:jscript "%~f0" "%xF%"
- for /f "usebackq delims=" %%F in ("%xF%.csv") do for /f "tokens=2 delims=- " %%a in ("%%F") do (
- setlocal enabledelayedexpansion &set "a=00%%a" &set "a=!a:~-3!"
- if exist "%pD%\!a!.pdf" ren "%pD%\!a!.pdf" "%%F.pdf"
- endlocal
- )
- del/q "%xF%.csv"&endlocal&pause&exit/b */
- v=WSH.arguments, xls=WSH.createobject('excel.application');
- xls.visible=false, xls.displayalerts=false, wb=xls.workbooks.open(v(0));
- wb.saveas(v(0)+'.csv',6), wb.close(), xls.quit(), WSH.quit();
复制代码
作者: liaoguinan 时间: 2024-10-24 20:32
回复 2# idwma
完美
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |