自己解凍アーカイブを作成しようとしていますが、解凍のデフォルト パスとの接続に問題があります。自己解凍アーカイブ プログラムと同じパスにファイルを解凍したいと考えています。残念ながら、ファイルは別のパス (C:\Users\computer\AppData\Temp\IXP000.TMP) に展開されています。パスを設定することは可能ですか?
質問する
5605 次
2 に答える
5
IExpressでこれを行う直接的な方法は見つかりませんが、適用できるトリックがあります。
しかし、最初に、これは7-Zipのモジュールのようなもので本当に簡単であることを指摘し7zCon.sfx
ます(必要なのは現在のディレクトリへのアーカイブ抽出だけで、質問はありません)。したがって、IExpress以外のものを試してみることをお勧めします。
とにかく、IExpressの問題は、インストールプログラムの実行時に、元のアーカイブのディレクトリにいないことです。現在のディレクトリはのようなものになり%temp%\IXP000.TMP
ました。したがって、親プロセスのディレクトリを見つける必要があります。これは一種の苦痛です。xcopy
それがわかれば、アーカイブの内容だけを宛先フォルダーに転送できます。
VBScriptでは、次のようになります。
Option Explicit
Dim objShell, objWMI
Dim objCmd, intMyPid, intMyParentPid, objMyParent
Set objShell = CreateObject("WScript.Shell")
Set objWMI = GetObject("winmgmts:root\cimv2")
Set objCmd = objShell.Exec("cmd.exe")
intMyPid = objWMI.Get("Win32_Process.Handle='" & objCmd.ProcessID & "'").ParentProcessId
objCmd.Terminate
intMyParentPid = objWMI.Get("Win32_Process.Handle='" & intMyPid & "'").ParentProcessId
Set objMyParent = objWMI.Get("Win32_Process.Handle='" & intMyParentPid & "'")
objShell.Run "xcopy /y * " & """" & Left(objMyParent.ExecutablePath, _
InStrRev(objMyParent.ExecutablePath, ".exe", -1, vbTextCompare) -1) &_
"\""", 0, True
その場合、インストールプログラムは次のようになりますwscript extractToOriginalLocation.vbs //B
。
(この質問への回答に多少触発されました。)
于 2012-12-04T10:01:39.747 に答える
0
いつでもcmdスクリプトを使用して、特定のディレクトリ内のファイルにコード行をエコーすることができます
于 2021-10-18T23:38:14.120 に答える