2016-05-12 6 views
2

ディレクトリ内のファイルを変換するバッチファイルを作成しようとしています。ディレクトリはこのコードで与えられています:管理者モードで実行した場合のバッチファイルの動作が異なります

@echo off 

rem // setting input directory 
:input1 
set/p "inputdir=Input directory: " 

rem // if input is invalid, prompt again 
if not exist "%inputdir%" (
echo Directory does not exist. 
echo "%inputdir%" 
goto input1 
) 

正常に動作します。しかし、後で環境変数の使用を検討したので、管理者として実行しようとしました。しかし、問題は、私はそれを正常に実行すると、ディレクトリを取る、スクリプトは問題なく継続しているということです。私が管理者でもっと走ったとき、それは "ディレクトリが存在しない"として動作します。

これはC:とD:ドライブ上の場所では正常に動作しますが、この問題はO:ドライブとP:ドライブ。

どのようにこの問題を解決するためのアイデアですか? ありがとう

答えて

3

通常の昇格(「管理者として実行」)プロセスは、ドライブのマッピング(デフォルト)またはsubst個のドライブを共有しません。昇格したコンテキストでプロセスを実行する場合は、ターゲットスクリプトを開始しようとする前に、ドライブをそこにマップするか、昇格したコンテキストでマップする(たとえば、管理者としてcmd.exeを実行する)必要があります。

参考:Some Programs Cannot Access Network Locations When UAC Is Enabled

1

「管理者として実行する」ときに、現在のディレクトリはあなたの考えではありません!ただ、自分自身にそれを証明するためにあなたのbatファイルの先頭に以下の行を追加します:あなたは、私は通常の近くにそれを置く任意のファイル/フォルダを参照する前に

@echo off 
echo(CD=%CD% 
pushd %~dp0 
echo(CD=%CD% 
pause 

だから、あなたが何をする必要があるか、あなたのbatファイルに次の行を追加しています始まり。

pushd %~dp0 

あなたがマップされたネットワークドライブから実行する場合にも正常に動作します。

+0

これが真かつ有用な情報ですが、私はこの質問にどのように適用されるか表示されません。 –

関連する問題