2016-11-05 2 views
1

은 .xlsx '에 위해를 .csv 변환 :어떻게하면 VB 스크립트가 완료되었음을 알 수 있습니까? 여기에서 솔루션을 사용하고

Convert .CSV to .XLSX using command line

Dim file, WB 

With CreateObject("Excel.Application") 
On Error Resume Next 
For Each file In WScript.Arguments 
    Set WB = .Workbooks.Open(file) 
    WB.SaveAs Replace(WB.FullName, ".csv", ".xlsx"), 51 
    WB.Close False 
Next  
.Quit 
End With 

WScript.Echo "Done!" 

나는 cmd를에서 이것을 실행 시도 및 모든 작동하지만, 당신은 cmd를에서 실행하면, 명령은 vb 스크립트가 여전히 처리되지만 즉시 완료됩니다. vb가 완료되었다는 것을 cmd에 알리는 방법이 있습니까? 배치 파일을 만들려고하는데, 다음 단계로 넘어 가기 전에이 부분이 끝났을 때를 알면 좋을 것입니다. 감사!

+0

아마도 복제본이 아니지만 다음과 관련이 있습니다. http://stackoverflow.com/q/187040/4996248 –

+1

어쩌면 ['start ""/ wait wscript yourscript.vbs'] (http : // ss64.com/nt/start.html)이 충분할 수 있습니다. – JosefZ

답변

2

당신은 아마 그 자체로 스크립트를 실행하는 :

C:\path\to\your.vbs 

이렇게하면 정상적인 설치 wscript.exe입니다 관련 통역으로 스크립트를 실행합니다. 기본적으로, 위의

wscript.exe C:\path\to\your.vbs 

wscript.exe과 동일 스크립트가 백그라운드에서 계속 실행하면서 즉시 반환 의미 비동기 스크립트를 실행합니다. 스크립트를 동 기적으로 실행하려면 명령 행 인터프리터 cscript.exe을 사용해야합니다. 저작권/버전 정보 메시지를 표시하지 않으려면 //NoLogo 매개 변수를 추가하십시오.

cscript.exe //NoLogo C:\path\to\your.vbs 

VBScript가 종료 된 후에 만 ​​배치 스크립트를 계속 실행합니다. call 명령을 사용할 필요는 없습니다.

에서 wscript.exe //h:cscript 또는 cscript.exe //h:cscript을 관리자로 실행하면 기본 인터프리터를 에서 cscript.exe으로 변경할 수 있습니다.

+0

무엇이'//'전부입니까? 명령 스위치는'/'입니다. 'cmd' 프롬프트에서'cscript.exe/nologo'가 잘 동작합니다. – Lankymart

+0

'cscript /? '의 출력을보십시오. 원래의 의도는 인터프리터의 매개 변수와 스크립트의 매개 변수를 구별하는 것이 었습니다. 요즘에는'/ NoLogo'와'/ NoLogo'가 둘 다 작동하는 것 같지만, 인터프리터 매개 변수에 이중 슬래쉬를 사용하는 것은 내 버릇이되었습니다. –

+0

호스트 매개 변수가'/'로 항상 나를 위해 일 했으므로 알지 못합니다. 항상 배우기. – Lankymart

0

cscript을 사용하면 일괄 처리 스크립트는 스크립트 엔진 프로세스가 종료 될 때까지 대기합니다. /T을 사용하면 제한 시간을 설정할 수 있습니다. 실행 시간이 초 단위로 지정된 제한을 초과하면 프로세스가 중단됩니다. 당신의 VBS 스크립트

@echo off 
call cscript //T:10 "%~dp0example.vbs" 
ECHO %ERRORLEVEL% 
pause 

사용 wscript.quit은 종료 코드를 반환합니다. 오류 번호는 오류 번호 속성에 저장됩니다.

On Error Resume Next 
WScript.Sleep 2000 
Err.Raise 507 ' An exception occurred 
wscript.quit Err.number 
관련 문제