从批处理文件到vbscript的相应命令

时间:2012-08-12 13:14:44

标签: vbscript batch-file

我试图从MSd窗口xp中的cmd脚本转到vbscript

cmd代码是的作品是

set home_=%~dp0

set part001=part001
set part002=part002
set part003=part003
set part004=part004

::get the dir in part001
for /f "delims=" %%A in ('dir /s/b/o:n/a:d ^"%home%%part001%\^"') do (
echo show have dir path
echo %%A
pause
)
echo to the end
pause
goto :eof

到vbscript

我不知道要转换的部分是 cmd {cmd codeing}

dim strHome as strimg =cmd{[%~dp0]}

dim strPart001 as sting = part001
dim strPart002 as sting = part002
dim strPart003 as sting = part003
dim strPart004 as sting = part004

'get the dir in part001
Dim objFSo, objFile
Set objFSo = CreateObject("Scripting.FileSystemObject")

set objDirPart001list = objFS.getfolder(strHome&strPart001\)
set subDirPart001list = objDirPart001list.SubFolders
for each  subDirPart001Name in subDirPart001list
    WScript.Echo show dir path
    WScript.Echo part
    cmd{pause}
    )
cmd{pause}

对应的vbscript命令是什么:

  • %~dp0
  • 暂停

1 个答案:

答案 0 :(得分:0)

%~dp0是一个所谓的魔术命令,但从技术上讲,这种方法称为变量替代。 % n 变量用于引用脚本的命令行参数。最常见的是,%0将返回正在执行的脚本的完整路径。 d和p是特殊修饰符,分别返回该路径的驱动器和路径部分。还有n返回文件名部分以及others。可以根据需要组合这些修饰符。因此%~dp0命令将返回执行脚本所在目录的完整驱动器和路径。要在VBScript中执行此操作,您可以使用依赖于WScript对象的ScriptFullName方法的以下任何内容:

Set objShell = CreateObject("WScript.Shell")
Set objFso = CreateObject("Scripting.FileSystemObject")
strPath = objFso.GetParentFolderName(WScript.ScriptFullName)

或者

strPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - Len(WScript.ScriptName))

或者我最喜欢的:

Replace(WScript.ScriptFullName, WScript.ScriptName, "")

pause命令用于停止命令解释程序并提示用户按任意键继续。通常这样做是为了使用户有时间在命令窗口关闭之前读取信息。这是在CScript中执行此操作的子例程。 (对于WScript,您只需使用一个简单的MessageBox。)

Sub Pause
    WScript.StdOut.Write "Press any key to continue . . . "
    WScript.StdIn.Read(1)
End Sub