<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JS:подключение сетевого диска]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=8579</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8579&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JS:подключение сетевого диска».]]></description>
		<lastBuildDate>Thu, 15 Aug 2013 15:45:09 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[JS:подключение сетевого диска]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74573#p74573</link>
			<description><![CDATA[<p>Задача такая: подключить определённый общий ресурс на сервере, как сетевой диск с определённой буквой на локальный комп., если такая буква в локальной системе уже используется, сообщить об ошибке, если с этой буквой подключён другой общий ресурс, отключить его и подключить требуемый. Написал как мне кажется коряво... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Может кто подскажет как покороче(поизящнее)...</p><div class="codebox"><pre><code>var netObj = new ActiveXObject(&quot;WScript.Network&quot;);            
var fsoObj = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;);    

var netDsk = &quot;\\\\192.168.7.22\\distrib&quot;, netDsk$ = &quot;\\\\server2003\\distrib&quot;, netLetter = &quot;x&quot;;

var netDrv = netObj.EnumNetworkDrives(), arr = [], cnt = 0;        
var coll = new Enumerator(netDrv);                

for(i = 0, coll.moveFirst(); !coll.atEnd(); coll.moveNext(), i++)
    {                                // запись в массив имён и ресурсов всех сетевых дисков 
    arr[i] = coll.item();
    }


for(j = 0; j &lt; netDrv.length; j++)
    {
    if( (arr[j].toLowerCase() == (netLetter.toLowerCase() + &quot;:&quot;)) &amp;&amp; ( (arr[j+1].toLowerCase() == netDsk.toLowerCase()) || (arr[j+1].toLowerCase() == netDsk$.toLowerCase()) ) )
        {                            // буква диска совпадает и ресурс совпадает


        cnt++;                            
        WScript.Quit();                        // выходим, ничего не делая, всё и так хорошо
        }
    else                        
        {
        if(arr[j].toLowerCase() == netLetter.toLowerCase() + &quot;:&quot;)
            {                        // совпадает буква диска, про ресурс ничего не известно, кроме того, что он, не тот, который нас интересует
            cnt++;                        
            try                        
                {
                netObj.RemoveNetworkDrive(arr[j], true, true);
                                    
                WScript.Sleep(1000);            // немного спим...

                DrvConn();                // вызов функции
                }
            catch(err)
                {
                WScript.Echo(&quot;Ошибка отключения диска:\n &quot; + err.message);
                WScript.Qiut();                // завершение скрипта по ошибке
                }
            
            }
        }
    }                              
if(cnt == 0)                                
    {DrvConn();}                            // вызов ф-ции, если интересующий ресурс не был найден и буква также &quot;не встретилась&quot;, среди сетевых дисков.


function DrvConn()
    {
    var drvColl = fsoObj.Drives;                    
    var en = new Enumerator(drvColl);                

    while(!en.atEnd())                        
        {
        if((en.item().DriveLetter.toLowerCase() == netLetter.toLowerCase()) &amp;&amp; (en.item().DriveType != 3))
            {
            WScript.Echo(&quot;Подключение сетевого диска как  \&quot;&quot; +  netLetter.toUpperCase() + &quot;\&quot;  невозможно\n&quot; +
                         &quot;так как такой диск уже присутствует в системе и это не сетевой диск&quot;);
            WScript.Quit();                    // завершение работы по ошибке                
            }
        en.moveNext();
        }
    try                                
        {
        netObj.MapNetworkDrive(netLetter + &quot;:&quot;, netDsk, true);
                                    
        }
    catch(err)
        {
        WScript.Echo(&quot;Ошибка подключения диска: &quot; + err.message);
        WScript.Quit();                        // завершение работы по ошибке        
        }
    }

</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (im2002)]]></author>
			<pubDate>Thu, 15 Aug 2013 15:45:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74573#p74573</guid>
		</item>
	</channel>
</rss>
