1

MS Window XPでcmdスクリプトからvbscriptに移行しようとしています

コマンドコードはい動作します

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
  • 一時停止
4

1 に答える 1

0

これ%~dp0はいわゆるマジック コマンドですが、より専門的には、この方法は変数置換として知られています。% n変数は、スクリプトのコマンド ライン パラメータを参照するために使用されます。最も一般的なの%0は、実行中のスクリプトへのフル パスを返します。d と p は、それぞれそのパスのドライブとパスの部分を返す特別な修飾子です。ファイル名部分などを返す n もあります。これらの修飾子は、必要に応じて組み合わせることができます。したがって、この%~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
于 2012-08-12T17:10:29.850 に答える