更具体地说,我想使用批处理文件加载"程序X"。然后,一旦程序完全加载并在屏幕上打开,从"文件夹A"移动一些文件。到"文件夹B"。然后,当手动退出程序X时,将先前移动的文件移回文件夹B.这是我尝试过的,但没有用。我没想到会这样。
start "" "C:\ProgramX.exe"
move /-y "C:\FolderA\File1.txt" "C:\FolderB\"
move /-y "C:\FolderA\File2.txt" "C:\FolderB\"
/wait "C:\ProgramX.exe"
move /-y "C:\FolderB\File1.txt" "C:\FolderA\"
move /-y "C:\FolderB\File2.txt" "C:\FolderA\"
最初我制作了两个单独的批处理文件,只是来回移动文件(我手动打开和关闭程序)并且它可以工作,但我想只有一个批处理文件加载程序,然后移动文件退出程序后再移回它们。
答案 0 :(得分:0)
您可以构建一个循环(goto),查看程序是否仍在运行(如果..then),并在循环后放回文件。
查看此代码段:
tasklist /FI "IMAGENAME eq notepad.exe" /FO CSV > search.log
FOR /F %%A IN (search.log) DO IF %%~zA EQU 0 GOTO end
start notepad.exe
:end
del search.log
检查notepad.exe是否正在运行。如果它没有运行,它将启动notepad.exe。
答案 1 :(得分:0)
我认为这是最有效的方式:
Dim examinee As Variant
Dim cell As Range
Dim word As String
Dim myCell As String
examinee = InputBox("How many sheets?")
word = InputBox("Looking for?")
For A = 1 To examinee
Sheets("sheet" & A).Select
On Error Resume Next
Range("A3", Range("A3").End(xlToRight)).Select
For Each Cell In Selection.Cells
myCell = Right(Cell, Len(Cell) - (InStrRev(Cell, " ") - 1))
MsgBox myCell ' just to be sure the word is found
If myCell Like word Then
Selection.Cells.Bold = False
Else
Delete.Column
End If
Next Cell
Next
在此方法中,等待状态为事件驱动(由OS控制),因此不会浪费CPU时间!更多详情here。
答案 2 :(得分:-1)
简单的方法是
move /-y "C:\FolderA\File1.txt" "C:\FolderB\"
move /-y "C:\FolderA\File2.txt" "C:\FolderB\"
"C:\ProgramX.exe"
move /-y "C:\FolderB\File1.txt" "C:\FolderA\"
move /-y "C:\FolderB\File2.txt" "C:\FolderA\"
或
move /-y "C:\FolderA\File1.txt" "C:\FolderB\"
move /-y "C:\FolderA\File2.txt" "C:\FolderB\"
start /wait "" "C:\ProgramX.exe"
move /-y "C:\FolderB\File1.txt" "C:\FolderA\"
move /-y "C:\FolderB\File2.txt" "C:\FolderA\"
但如果您坚持在move
之后执行start
,
@ECHO OFF
SETLOCAL
start /b "process running" "arj.exe"
move /-y "C:\FolderA\File1.txt" "C:\FolderB\"
move /-y "C:\FolderA\File2.txt" "C:\FolderB\"
ECHO waiting
:wait
tasklist /FI "IMAGENAME eq arj.exe"|FINDSTR /i "arj.exe">nul&IF NOT errorlevel 1 timeout /t 1 >nul&goto wait
move /-y "C:\FolderB\File1.txt" "C:\FolderA\"
move /-y "C:\FolderB\File2.txt" "C:\FolderA\"
ECHO finished
pause
GOTO :EOF
我在这里使用arj.exe
来测试方法。当然,它可以是在用户控制下退出的任何可执行文件,而不像notepad
立即退出实例化的交互式实例。
我假设任何时候系统中只有一个programx
活动的实例。
echo
和pause
仅用于演示批处理程序状态。