이 스레드 는 배치, VBS, JScript, PowerShell 등과 같은 여러 스크립팅 언어의 조합을 포함 할 수있는 배치 하이브리드를 코딩하는 방법을 설명합니다. 문제는 배치 하이브리드가 "외부"언어 블록을 "함수"로 취급하는지 여부입니다. 이러한 블록에 대한 호출에는 % 1, % 2 등과 같은 일반적인 인수로 참조되는 일반 및 지연 확장 배치 변수와 같은 인수가 포함될 수 있습니다.
아래 예제는 이 파일 압축 해제 코드 를 사용하는 동안 파일 압축을 푸는 작업의 접근 방식을 보여 주지만 Win10 64 비트에서 오류가 발생합니다. 이유는 무엇입니까? 연결된 파일 압축 해제 코드는 Win 10에서 실행할 때도 오류가 발생 하지만 다른 오류가 발생 합니다.
<!-- : Begin batch script
@echo off
set "dir=C:\Temp\" & set "file=%USERPROFILE%\Downloads\archive.zip\"
cscript //nologo "%~f0?.wsf" "%dir%" "%file%"
exit /b
----- Begin wsf script --->
<job><script language="VBScript">
set fso = CreateObject("Scripting.FileSystemObject")
If NOT fso.FolderExists(%1) Then
fso.CreateFolder(%1)
End If
set objShell = CreateObject("Shell.Application")
set FilesInZip = objShell.NameSpace(%2).items
objShell.NameSpace(%1).CopyHere(FilesInZip)
set fso = Nothing
set objShell = Nothing
</script></job>
:: Error
..\test.bat?.wsf(9, 8) Microsoft VBScript compilation error: Invalid character
vbscript에서 첫 번째 인수는 다음과 같습니다. wscript.Arguments(0)
두 번째 인수는 다음과 같습니다. wscript.Arguments(1)
따라서 다음과 같이 작성해야합니다.`
----- Begin wsf script --->
<job><script language="VBScript">
set fso = CreateObject("Scripting.FileSystemObject")
If NOT fso.FolderExists(wscript.Arguments(0)) Then
fso.CreateFolder(wscript.Arguments(0))
End If
set objShell = CreateObject("Shell.Application")
set FilesInZip = objShell.NameSpace(wscript.Arguments(1)).items
objShell.NameSpace(wscript.Arguments(0)).CopyHere(FilesInZip)
set fso = Nothing
set objShell = Nothing
</script></job>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다