Batch file 批处理文件从UNC路径读取INI文件

Batch file 批处理文件从UNC路径读取INI文件,batch-file,ini,unc,Batch File,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 Asso

所以,我一直在处理一个批处理文件来收集特定的系统信息,我在打开网络安装中的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
[Default]
DataHome=C:\ProgramData\Zephyr\Data\
SQLiteHome=C:\ProgramData\Zephyr\Data\
[DataBaseList]
Tons of other lines I don't need to read Right now....
在这一点上,我得到一个错误,说我们无法读取Style.ini。在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
[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。不知什么原因,我就是看不懂。你说:

I just know that when the INI is locally on C:\ that it can be read, 
but on the network it cannot.
那不是真的。您可以使用UNC读取ini文件,如下所示:

\\ServerName\directory\any.ini
错误可能在其他地方,例如不匹配的引号、身份验证或缺少文件。了解您得到的确切错误消息将有助于调试确切的原因

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

CMD does not support UNC paths 
意味着删除此行

cd %StyleDir%
在批处理文件中,因为除非首先映射到驱动器号,否则无法使用cd。有关详细信息,请参阅地图/帮助。或者,您可以通过修复findstr命令以直接使用UNC来避免将光盘刻录到该文件夹,例如:

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

选择哪个选项将取决于对找到的字符串所做的操作。您提到您正在填充这些字符串,但没有提到填充的位置。如果填充到远程服务器上的文件,请使用驱动器映射选项。如果在本地进行填充,则使用UNC选项。

我发现,您只需使用

pushd \\server\dir
而不是

cd \\server\dir

当指向路径时。我想这很容易。我仍然会出错,但它会过去的,我没意见:-)

\\SERVERNAME\SHARENAME\directory可能是\\ALFRED\C$\directory@Emacs用户错误如下:
\\server\folder\Dir`
CMD不支持UNC路径作为当前目录。`
FINDSTR:无法打开style.ini
FINDSTR:无法打开style.ini
FINDSTR:无法打开style.ini
@Paul所以你是说因为我使用的是UNC路径,所以这根本不起作用?我不能总是使用驱动器号路径,因为根据原始安装人员的设置,驱动器号路径可能会有所不同。有办法解决这个问题吗?