上記との違いは「ネットワークドライブ上の」バッチファイルである点です。
以下がそのバッチ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
rem 管理者権限があるかどうかチェック | |
whoami /PRIV | find "SeLoadDriverPrivilege" >NUL | |
if not errorlevel 1 goto start | |
rem ない場合は powershell 経由で自分自身を実行 | |
rem %0 のドライブレターで検索して UNC パスを取得 | |
for /f "usebackq tokens=1,2,3" %%i in (`net use`) do if "%%j" == "%~d0" SET UNC=%%k | |
rem net use で割当をしてから実行(既に割当たっている場合もあるので成否にかかわらずコマンド実行) | |
powershell.exe -Command Start-Process -FilePath cmd.exe -ArgumentList '/c "net use %~d0 %UNC% || %~dp0%~nx0"' -Wait -Verb Runas | |
goto :EOF | |
:start | |
cd /d %~dp0 | |
rem ここからバッチ本来の処理 |
前回と異なる点は、 PowerShell で自分自身を起動する前に net use でトライブ割当をしている点です。
管理者権限のユーザーに移動すると、割当ていたネットワークドライブが見えない場合があるので、このような対応をしています。
参考
0 件のコメント:
コメントを投稿