Мне нужно создать скрипт vbs (для обслуживания), который переименовывает foo.txt в foo.bat и запускает foo.bat, а когда foo.bat заканчивается, переименуйте foo.bat снова в foo.txt
Это мой скрипт vbs:
On Error Resume next
Dim Fso
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
Fso.MoveFile "foo.txt", "foo.bat"
SCRIPT = "foo.bat"
Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)
NewPath = objFSO.BuildPath(strFolder, SCRIPT)
set objshell = createobject("wscript.shell")
objshell.Run NewPath, vbHide, true
Fso.MoveFile "foo.bat", "foo.txt"
On Error GoTo 0
скрипт выполняется хорошо.Переименуйте foo.txt в foo.bat.Запускает foo.bat, но не ожидает окончания работы foo.bat и переименовывает его в foo.txt.
Я изменил эту строку, ничего не происходит:
objshell.Run NewPath, vbHide, 1, true
Что мне нужно или что я сделал не так?
Альтернативное решение (без VBScript): (По предложению @KenWhite)
код:
On Error Resume next
Dim Fso
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
Fso.MoveFile "foo.txt", "foo.bat"
SCRIPT = "foo.bat"
Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)
NewPath = objFSO.BuildPath(strFolder, SCRIPT)
set objshell = createobject("wscript.shell")
objshell.Run NewPath, true
On Error GoTo 0
И в конце foo.bat:
ren foo.bat foo.txt
exit
Спасибо