对于我的.bat
,我想:
现在,我可以复制和粘贴文件,但是我不知道如何使用cmd函数打开它,并保存它。
谢谢你的帮助。
我的代码是:
@echo off
cmd "O:\XXXX\*.*"
xcopy/y "O:\XXXX\*.*" "O:\XXX\"
pause
发布于 2021-07-11 11:11:52
Marie (TooLong;ToRead)在不连贯的评论中
我建议,在这种情况下,一种更简单的替代方法是使用一个简单的命令行工具--参见Orlandos Sendkey实用程序(这个示例几乎就是您想要做的)
SendKeys.exe 1.5 10 "Microsoft Excel" "Hello!~{PAUSE 2}After 2s.~{PAUSE 2}%(FS)~"
你回答说
@KJ谢谢,KJ,不幸的是,我不能用我的电脑下载Orlando。
因此,我们继续以更脏的方式进行操作,但是您的仍然需要一种通过调用自动保存程序来保存文件的方法,无论如何,在源.xlsm中使用扩展的excel宏可以很容易地完成这一操作。
在所有这些更改之后,您的非工作文件现在应该在您的问题中被替换为
@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 见后面的
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所在的工作文件夹中。在后面的步骤中,我没有在名称中使用空格或&
,这是有原因的。
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替换为
@echo off
start /WAIT Wscript OpenRunSaveExit.vbs
xcopy/y "\\XXX\Dossier_avant*.*" "\\XXX\Dossier_apres\"
pause
检查它是否运行,而不需要任务命中。
最后,为什么使用2-4行.bat,因为桌面快捷方式可能更容易使用。因此,为.vbs文件创建一个快捷方式(右键单击.vbs,并以英文表示其创建快捷方式),并将其移动到桌面。
然后像这样更改属性(其中&有一个特殊的含义,因此.vbs文件名不能有空格或&.)
%comspec% /c "start /wait wscript.exe OpenRunSaveExit.vbs & xcopy/y "\\XXX\Dossier_avant*.*" "\\XXX\Dossier_apres\" & pause"
我忘了在这张图片中添加Peters start / wait
,直到稍后
发布于 2021-07-08 13:03:01
除非提供这样的接口,否则不能通过批处理与Microsoft (或大多数其他程序)进行交互。但是,可以选择用VBS,即通过Microsoft支持的接口与该软件进行交互。
要打开程序,请检查start
命令,例如:
start /B excel.exe <filename>
然后,您可以等待用户,编辑和保存文件两分钟,或者也可以利用pause
,如果您不想引入保存和使用xcopy
复制之间的竞争条件。
或者像这样使用start
:
start /WAIT /B excel.exe <filename>
因此,打开的文件阻塞操作,一旦它关闭(用户保证不会编辑或保存),那么它将解除阻塞,xcopy
将在没有任何时间依赖特性的情况下进行。
https://stackoverflow.com/questions/68302091
复制相似问题