web-dev-qa-db-ja.com

「UNCパスはサポートされていません」というメッセージなしでネットワーク共有からバッチファイルを実行する方法

ネットワーク共有からバッチファイルを実行しようとしていますが、次のメッセージが表示され続けます。「UNCパスはサポートされていません。デフォルトはWindowsディレクトリです。」バッチファイルは\\Server\Soft\WPX5\install.batにあります。管理者としてログインして、Windows 7デスクトップから\\Server\Soft\WP15\に移動し、install.batをダブルクリックすると、「UNCパスはサポートされていません」と表示されます。メッセージ。オンラインでマッピングドライブが機能しないことを示すいくつかの提案を見つけましたが、シンボリックリンクを使用するとこの問題は解決しますが、シンボリックリンクは機能しませんでした。以下にバッチファイルの内容を示します。私がやろうとしていることを達成するのに役立つ支援をお願いします。基本的に、\\Server\Soft\WP15\install.batからバッチファイルを実行できるようにします。

バッチファイルの内容

mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15
\\server\soft\WP15\setup.exe
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg

また、インストールの完了後にシンボリックリンクを削除するにはどうすればよいですか?

72
Stew

PUSHDとPOPDはあなたの場合に役立つはずです。

@echo off
:: Create a temporary drive letter mapped to your UNC root location
:: and effectively CD to that location
pushd \\server\soft

:: Do your work
WP15\setup.exe
robocopy.exe "WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s WPX5\Custom\Migrate.reg

:: Remove the temporary drive letter and return to your original location
popd

詳細については、コマンドラインから「PUSHD /?」と入力してください。

123
dbenham

このセキュリティチェックを回避するために レジストリ設定 があります(ただし、ご自身の責任で使用してください)。

レジストリパスの下

HKEY_CURRENT_USER
\Software
\Microsoft
\Command Processor

値DisableUNCCheck REG_DWORDを追加し、値を0 x 1(16進数)に設定します。

注:Windows 10バージョン1803では、設定はHKLMの下にあるようです:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

23
Vinzz

clsが最良の答えだと思います。誰でも見ることができるようになる前にUNCメッセージを隠します。すぐに@pushd %~dp0と組み合わせたので、スクリプトを開いて場所を1ステップでマップするように見えるため、さらなるUNC問題を防ぐことができます。

cls
@pushd %~dp0
:::::::::::::::::::
:: your script code here
:::::::::::::::::::
@popd

ノート:

pushdは、作業ディレクトリを新しいマッピングされたドライブのスクリプトの場所に変更します。

最後にpopd、マップされたドライブをクリーンアップします。

19
Grallen

基本的に、そのメッセージを見ずにUNCパスから実行することはできません。

私が通常行うことは、スクリプトの先頭にCLSを置くだけなので、そのメッセージを見る必要はありません。次に、使用する必要があるネットワーク共有内のファイルへの完全パスを指定します。

11
aphoria

Windowsエクスプローラーだけでサーバー共有を参照し、ダブルクリックしてバッチファイルを起動できるようにする必要がありました。 @dbenhamは、(popdの心配なしで)私のシナリオのより簡単なソリューションに私を導きました:

:: Capture UNC or mapped-drive path script was launched from
set NetPath=%~dp0

:: Assumes that setup.exe is in the same UNC path
%NetPath%setup.exe

:: Note that NetPath has a trailing backslash ("\")
robocopy.exe "%NetPath%Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s %NetPath%..\WPX5\Custom\Migrate.reg

:: I am not sure if WPX5 was typo, so use ".." for parent directory
set NetPath=
pause
8
JayRO-GreyBeard

エクスプローラから直接バッチを起動する代わりに、バッチへのショートカットを作成し、ショートカットのプロパティで開始ディレクトリを%TEMP%などのローカルパスに設定します。

シンボリックリンクを削除するには、rmdirコマンドを使用します。

4
jameslr

私は最近、Windows 7のネットワーク共有ドライブ上のバッチファイルで作業している同じ問題に遭遇しました。

私のために働いた別の方法は、Windowsエクスプローラーを介してサーバーをドライブにマップすることでした:ツール->ネットワークドライブのマップ。\yourserverへのドライブ文字とフォルダーパスを指定します。私はネットワーク共有で作業することが多いので、ネットワーク共有へのマッピングはより便利になり、「UNCパスはサポートされていません」エラーを解決しました。

2
Kai

私の状況は少し異なります。社内のビジネスアプリケーションの最新バージョンを配布するために、起動時にバッチファイルを実行しています。

この状況では、次の文字列でWindowsレジストリ実行キーを使用しています

cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat

これにより、起動時に2つのコマンドが正しい順序で実行されます。最初に、ユーザーがアクセス許可を持っているディレクトリにバッチファイルをローカルにコピーします。次に、同じバッチファイルを実行します。ローカルディレクトリc:\ InternalAppsを作成し、ネットワークからすべてのファイルをコピーできます。

これはおそらく元のポスターの質問を解決するには遅すぎますが、他の誰かを助けるかもしれません。

2
James

これは私が使用したRegKeyです。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001
1