使用Windows批处理文件命令打开、等待、保存、关闭和复制文件 |
您所在的位置:网站首页 › bat批量打开并另存 › 使用Windows批处理文件命令打开、等待、保存、关闭和复制文件 |
Marie (TooLong;ToRead)在不连贯的评论中 我建议,在这种情况下,一种更简单的替代方法是使用一个简单的命令行工具--参见Orlandos Sendkey实用程序(这个示例几乎就是您想要做的) 从cpap.com.br/orlando下载sendkey查看演示如何运行。使用空白工作表打开excel,并在CMD>上运行此演示字符串SendKeys.exe 1.5 10 "Microsoft Excel" "Hello!~{PAUSE 2}After 2s.~{PAUSE 2}%(FS)~" 适应您自己版本的excel键,因为%(FS)是ALT文件保存的英文版本你回答说 @KJ谢谢,KJ,不幸的是,我不能用我的电脑下载Orlando。 因此,我们继续以更脏的方式进行操作,但是您的仍然需要一种通过调用自动保存程序来保存文件的方法,无论如何,在源.xlsm中使用扩展的excel宏可以很容易地完成这一操作。 在所有这些更改之后,您的非工作文件现在应该在您的问题中被替换为 代码语言:javascript复制@echo off start "Excel Running" /MIN EXCEL.EXE "\\XXX\Fichier.xlsm" REM add a delay of **2 minutes !** whilst sheet recalculates before saving a copy timeout 120此时复制未使用键保存的文件的REM将不会。 REM是解决问题的真正需要,除非您使用宏?。 REM 见后面的 代码语言:javascript复制xcopy/y "\\XXX\Dossier_avant*.*" "\\XXX\Dossier_apres\" REM add a 3 second delay to check above worked but is not really needed timeout 3 REM temporary for debugging. Later just REM it out TASKLIST /M |Find /i "exce" REM this line should be working with either a SUCCESS: or ERROR: TASKKILL /T /F /IM excel.exe REM keep this line for seeing errors above, once happy, it can become REM PAUSE PAUSE我认为,如果将(受IT策略限制)限制在命令行,最好编写自己的自动保存宏,但是,我的问题是,我不知道您是否需要用于多个input.xlsm。 因此,将其保存为OpenRunSaveExit.vbs,保存在您的.bat所在的工作文件夹中。在后面的步骤中,我没有在名称中使用空格或&,这是有原因的。 代码语言:javascript复制Set WshShell = WScript.CreateObject("WScript.Shell") ' You may need to include the path to excel.exe if it is a portable version like mine WshShell.Run "EXCEL.EXE "+"\\XXX\Fichier.xlsm", 9 ' 120000 milli-seconds = 2 minutes WScript.Sleep 120000 ' These are the English key combinations for ALT+File+Save . SO alter or remove if not needed WshShell.SendKeys "%FS" ' These are the English key combinations for ALT+File+eXit . SO alter if needed for french excel WshShell.SendKeys "%FX" ' Lets us wait 2 seconds for clean closure WScript.Sleep 2000,正如Peter在 他的回答中所指出的,您需要在xcopy之前进行/WAIT,并且取决于您的vbs文件处理的设置方式,您可能不需要在起始行中使用Wscript。 现在将您的.bat替换为 代码语言:javascript复制@echo off start /WAIT Wscript OpenRunSaveExit.vbs xcopy/y "\\XXX\Dossier_avant*.*" "\\XXX\Dossier_apres\" pause检查它是否运行,而不需要任务命中。 最后,为什么使用2-4行.bat,因为桌面快捷方式可能更容易使用。因此,为.vbs文件创建一个快捷方式(右键单击.vbs,并以英文表示其创建快捷方式),并将其移动到桌面。 然后像这样更改属性(其中&有一个特殊的含义,因此.vbs文件名不能有空格或&.) 代码语言:javascript复制%comspec% /c "start /wait wscript.exe OpenRunSaveExit.vbs & xcopy/y "\\XXX\Dossier_avant*.*" "\\XXX\Dossier_apres\" & pause"我忘了在这张图片中添加Peters start / wait,直到稍后 ![]() |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |