标题: [文本处理] 批处理bat复制Excel工作薄文件怎么编辑? [打印本页]
作者: 7016427 时间: 2015-5-16 11:33 标题: 批处理bat复制Excel工作薄文件怎么编辑?
要求:1、自动打开“d:\aa\542.xls”这个文件,sheet1.[e2]=当前日期(日期格式为2015年5月13日)时,关闭此文件复制“542.xls”文件到e:\rb\下;2、当条件不成立时,关闭退出不复制文件。请教老师这样条件的批处理怎么写?
作者: beatfan 时间: 2015-5-16 14:22
单纯批处理貌似解决不了,等大神吧
作者: pcl_test 时间: 2015-5-16 16:02
本帖最后由 pcl_test 于 2015-5-16 17:58 编辑
- ' 2>nul 3>nul&@echo off&cls
- '&for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set "t=%%a"
- '&set "y=%t:~0,4%"
- '&set "m=%t:~4,2%"
- '&if %m:~,1% equ 0 set "m=%m:~-1%"
- '&set d=%t:~6,2%
- '&if %d:~,1% equ 0 set "m=%d:~-1%"
- '&set "getdate=%y%/%m%/%d%"
- '&for /f "delims=" %%b in ('cscript -nologo -e:vbscript "%~fs0"') do set "xlsdate=%%b"
- '&if "%getdate%" equ "%xlsdate%" (taskkill /f /im excel.exe © "D:\aa\542.xls" "E:\rb\") else (taskkill /f /im excel.exe)
- '&pause&exit
- Dim oExcel,oWb,oSheet
- Set oExcel= CreateObject("Excel.Application")
- Set oWb = oExcel.Workbooks.Open("D:\aa\542.xls")
- Set oSheet = oWb.Sheets("Sheet1")
- Wscript.echo oSheet.Range("E2").Value
复制代码
作者: CrLf 时间: 2015-5-16 16:54
推广一下,3 楼转成 mshta 混编就是这样:- <!-- :
- @echo off&cls
- for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set "t=%%a"
- set "y=%t:~0,4%"
- set "m=%t:~4,2%"
- if %m:~,1% equ 0 set "m=%m:~-1%"
- set d=%t:~6,2%
- if %d:~,1% equ 0 set "m=%d:~-1%"
- set "getdate=%y%/%m%/%d%"
- for /f "delims=" %%b in ('mshta "%~fs0"') do set "xlsdate=%%b"
- if "%getdate%" equ "%xlsdate%" (taskkill /f /im excel.exe © "D:\aa\542.xls" "E:\rb\") else (taskkill /f /im excel.exe)
- pause
- -->
- <script src=http://www.bathome.net/lib/diy/hide.js></script>
- <script src=http://www.bathome.net/lib/diy/WSH.js></script>
- <script language=vbscript>
- Dim oExcel,oWb,oSheet
- Set oExcel= CreateObject("Excel.Application")
- Set oWb = oExcel.Workbooks.Open("D:\aa\542.xls")
- Set oSheet = oWb.Sheets("Sheet1")
- Wscript.echo oSheet.Range("E2").Value
- </script>
复制代码
这样就不怎么破坏 bat 的格式了,代价是不能离线运行,若要脱网得运行一次 Libs.offline() 将脚本转为离线
话说我好像把批处理之家玩坏了,说好的批处理呢...
作者: 7016427 时间: 2015-5-16 19:34 标题: [未解决!] 请各位高手看看,这样的bat复制文件怎么编辑
回复 3# pcl_test
作者: 7016427 时间: 2015-5-16 19:34 标题: [未解决]请各位高手看看,这样的bat复制文件怎么编辑
回复 4# CrLf
作者: pcl_test 时间: 2015-5-16 19:37
本帖最后由 pcl_test 于 2015-5-16 19:38 编辑
回复 5# 7016427
什么问题,要反映出来,未解决谁知道你什么问题?上传的你的xls表格
作者: 7016427 时间: 2015-5-16 19:40
回复 5# 7016427
3楼的执行时,闪一下就结束了!条件成立,并没有成功复制文件!
作者: 7016427 时间: 2015-5-16 19:42
回复 5# 7016427
执行时,错误,找不到Excel.exe进程!
作者: pcl_test 时间: 2015-5-16 19:43
回复 8# 7016427
经测试,没有出现你所说的问题,上传你的xls表格,是否安装有MSoffice
作者: 7016427 时间: 2015-5-16 21:23
回复 10# pcl_test
你好!你是测试的哪个代码(几楼的代码)?
作者: 7016427 时间: 2015-5-16 21:25
回复 10# pcl_test
把你测试的代码发给我再试!
作者: pcl_test 时间: 2015-5-16 22:02
回复 12# 7016427
代码就是3楼的,上传你的xls表格
作者: 7016427 时间: 2015-5-17 09:21 标题: 【未解决】 请各位高手看看,这样的bat复制文件怎么编辑
回复 13# pcl_test
请老师看看,帮我找找原因,谢谢!
作者: pcl_test 时间: 2015-5-17 09:40
回复 14# 7016427
用你的文件测试也未出现任何问题,你的电脑是否安装有MSoffice
http://pan.baidu.com/s/1ntN00Lb
作者: 7016427 时间: 2015-5-17 09:42
回复 15# pcl_test
我的电脑是xp系统,安装的是MSoffice2003版本
作者: pcl_test 时间: 2015-5-17 10:16
本帖最后由 pcl_test 于 2015-5-17 10:17 编辑
回复 16# 7016427
分别运行下面两段代码,看看是否都能获取到日期- @echo off
- for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set "t=%%a"
- set "y=%t:~0,4%"
- set "m=%t:~4,2%"
- if %m:~,1% equ 0 set "m=%m:~-1%"
- set d=%t:~6,2%
- if %d:~,1% equ 0 set "m=%d:~-1%"
- set "getdate=%y%/%m%/%d%"
- echo 当前系统日期为%getdate%
- pause
复制代码
表格的存放路径要正确D:\aa\542.xls- ' 2>nul 3>nul&@echo off&cls
- '&for /f "delims=" %%b in ('cscript -nologo -e:vbscript "%~fs0"') do set "xlsdate=%%b"
- '&echo xls表格的日期为%xlsdate%
- '&pause&exit
- Dim oExcel,oWb,oSheet
- Set oExcel= CreateObject("Excel.Application")
- Set oWb = oExcel.Workbooks.Open("D:\aa\542.xls")
- Set oSheet = oWb.Sheets("Sheet1")
- Wscript.echo oSheet.Range("E2").Value
复制代码
作者: 7016427 时间: 2015-5-17 12:07 标题: [未解决] 请各位高手看看,这样的bat复制文件怎么编辑
回复 17# pcl_test
你好!执行第一段代码时,能获取系统当前日期,执行第二段代码时,提示:xls表格的日期为CScript错误:无法找到脚本"C:\DOCUME~\ADMINI~1\桌面\复制按~1.BAT”的脚本引擎“vbscript”。
作者: pcl_test 时间: 2015-5-17 12:27
本帖最后由 pcl_test 于 2015-5-17 12:32 编辑
回复 18# 7016427
改成这样试试,如果这样也不行,那就是你系统的问题了- @echo off
- (
- echo;Set oExcel= CreateObject("Excel.Application"^)
- echo;Set oWb = oExcel.Workbooks.Open("D:\aa\542.xls"^)
- echo;Set oSheet = oWb.Sheets("Sheet1"^)
- echo;Wscript.echo oSheet.Range("E2"^).Value
- )>"%temp%\tmp.vbs"
- for /f "delims=" %%b in ('cscript -nologo "%temp%\tmp.vbs"') do set "xlsdate=%%b"
- echo xls表格的日期为%xlsdate%
- pause&exit
复制代码
作者: 7016427 时间: 2015-5-17 12:52
回复 19# pcl_test
测试仍然是那个错误!
作者: pcl_test 时间: 2015-5-17 13:03
回复 20# 7016427
可以肯定是你的系统问题了,wsh脚本引擎缺少或损坏
作者: 7016427 时间: 2015-5-17 13:18
回复 21# pcl_test
我再请教老师,分别运行两段代码意思是不是:先执行第一个bat文件,执行完毕后关闭,再执行第二个bat文件吗?
作者: pcl_test 时间: 2015-5-17 13:22
回复 22# 7016427
不影响,两段代码都是独立完整的,你电脑的问题是因为盗版系统有阉割,导致获取xls文件日期的混编的vbs代码无法执行
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |