2015-06-26 131 views
0

所以,我一直在研究一个批处理文件来收集特定的系统信息,我已经在网络安装中打开一个INI文件进入路块。因此获得的路径是:批处理文件读取来自UNC路径的INI文件

for /f "tokens=2*" %%a in ('REG Query "HKCU\SOFTWARE\Zephyr Associates, Inc." /v StyleDir 2^>nul') do set "StyleDir=%%~b" 
for /f "tokens=2*" %%a in ('REG Query "HKLM\SOFTWARE\Zephyr Associates, Inc." /v StyleDir 2^>nul') do set "StyleDir=%%~b" 
for /f "tokens=2*" %%a in ('REG Query "HKLM\SOFTWARE\Wow6432Node\Zephyr Associates, Inc." /v StyleDir 2^>nul') do set "StyleDir=%%~b" 
cd %StyleDir% 

所以在这种情况下,假设%StyleDir%是//服务器/ StyleDir/

后来在我们阅读Style.ini与以下文件中的脚本:

for /f "tokens=2 delims==" %%a in ('findstr SQLiteHome style.ini') do set SQLiteHome=%%a 
for /f "tokens=2 delims==" %%a in ('findstr Server style.ini') do set SQL=%%a 
for /f "tokens=2 delims==" %%a in ('findstr DataHome style.ini') do set DataHome=%%a 

在这一点上,我收到一个错误,说我们无法阅读Style.ini。在Style.ini中我有以下内容:

[Default] 
DataHome=C:\ProgramData\Zephyr\Data\ 
SQLiteHome=C:\ProgramData\Zephyr\Data\ 
[DataBaseList] 
Tons of other lines I don't need to read Right now.... 

后来我填充了一个记录信息的txt文件。该脚本如下:

::Output 
echo StyleDir: %StyleDir% >> SystemInformation.txt 
echo SQLiteHome: %SQLiteHome% >> SystemInformation.txt 
echo SQL Server: %SQL% >> SystemInformation.txt 
echo DataHome: %DataHome% >> SystemInformation.txt 

那么是否有一种特殊的方式,我可以从INI文件中记录此信息?我有关于临时映射网络驱动器的想法,但问题在于知道哪些网络驱动器已经映射,以便我不会破坏已有的网络驱动器。我甚至不能100%确定这与UNC路径有关,我只知道当INI本地位于C:\可以读取,但在网络上它不能。有什么建议尝试?

我注意到的另一件事是,我可以从批处理文件中打开Style.ini,无论位置如何。由于某种原因,我无法阅读它。

回答

0

我想通了,你所要做的就是指向路径时使用的

pushd \\server\dir 

代替

cd \\server\dir 

。数字会很容易。我仍然得到一个错误,但它会继续它,这是我的罚款:-)

0

你说:

I just know that when the INI is locally on C:\ that it can be read, 
but on the network it cannot. 

这不是真的。你可以阅读INI文件,像这样的UNC:

\\ServerName\directory\any.ini 

该错误可能是其他地方,如不匹配的引号,认证或丢失的文件。知道你得到确切的错误信息将有助于调试的确切原因。

扩展响应完整的错误消息:

CMD does not support UNC paths 

意味着您的批处理文件删除此行

cd %StyleDir% 

,因为你不能光盘,除非您映射到一个驱动器号第一。详情请参阅地图/帮助。或者您也可以通过固定findstr命令直接使用UNC,如避免cd'ing到该文件夹​​:

findstr stringToSearch \\full\UNC\path\to\file.ini 

哪个选项您选择将取决于正在做什么,以找到字符串。你提到你正在填充这些字符串,但不是在哪里。如果填充到远程服务器上的文件,请使用驱动器映射选项。如果在本地填充,则使用UNC选项。

+0

\\ SERVERNAME \ SHARENAME \目录可能是\\ ALFRED \ C $ \目录 – lit

+0

@Emacs用户 错误是如下: '\\服务器\文件夹\导演\' 'CMD不支持UNC路径,当前directories.' 'FINDSTR:无法打开style.ini' 'FINDSTR:无法打开style.ini ' 'FINDSTR:Can not open style.ini' – Pyrometheous

+0

@Paul所以你说因为我使用的是UNC路径,所以这根本不起作用?我不能总是使用驱动器盘符路径,因为根据原始安装人员的设置,它可能会有所不同。有没有办法解决这个问题? – Pyrometheous

相关问题