2016-05-12 67 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:驅動器上,這是由subst 。

任何想法如何解決這個問題? 謝謝

回答

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 

所以,你需要做的就是這一行之前,您引用任何文件添加到您的批處理文件/文件夾我通常把它附近開始。

pushd %~dp0 

從映射網絡驅動器運行時,這也可以正常工作。

+0

這是真實有用的信息,但我不明白這是如何適用於該問題。 –

相關問題