Witam.
Chciałbym napisać skrypt który, pobierze wszystkie zmapowane dyski (litery oraz adres) i przemapuje je na inny adres. Niezbyt wiem jak sie do tego zabrać. Moim pomysłem jest coś takiego aby wyciągnąć net use do pliku oraz wykonywać na tym pliku następujące operacje wyciągnąć jako zmienna litere oraz folder. Tylko nie wiem jak z pliku tekstowego pobrać interesujące mnie rzeczy.
Plik wygląda tak
Nowe połĄczenia zostanĄ zapamientane.
Stan Lokalny Zdalny Sieć
OK X: \adress\Public Microsoft Windows Network
Polecenie zostao wykonane pomyślnie.
A następnie zrobić polecenie które w pętli przekopiuje podane wyzej parametry
coś w stylu: net use zm1: \adress\zm2 /p:yes
W międzyczasie usuwając stare zmapowane dyski.
Mój pomysł:
net use > mapy.txt
[jakiś sposób który wyciągnie dane rzeczy z pliku]
net use * /delete
net use zm1: \adress\zm2 /p:yes
Z tego co wiem, komendą FOR możesz odczytać linie z pliku
W Twoim przypadku należy „wyłączyć” z przeglądania pliku kilka pierwszych linii oraz ostatnią, a przeanalizować te pozostałe mówiące o zmapowanym dysku.
Gdybyś mi napisał dokładnie co chcesz osiągnąć.
Wyjaśnij mi jak to miałoby wyglądać, gdybyś miał dwa zmapowane dyski i jaki miałby być efekt końcowy OK X: \192.168.1.23\Public OK Y: \192.168.1.23\Movies
Litery zostają, zmieniają się tylko adresy?
Chciałbyś wpisywać adres do okienka i wykonywać remapowanie?
Chodzi o to ,że bedzie zmiana serwera zróbmy tak
Serwer 1 ma ip: 12.0.0.142
Serwer 2 (nowy) ma ip: 13.0.0.14
Wszystkie zasoby są na serwerze 12:0.0.142
Ludzie maja pomapowane po kilka dysków np.
P: \12.0.0.142\Produkcja
M:\12.0.0.142\Magazyn
S:\12.0.0.142\Sprzedaż
i chodzi o to aby skopowioać odpowiednie litery i nazwy folderów. Ludzie często chcą nazywać je 1 litera folderu.
I najlepiej było by to zrobić skryptem który skopiuje litery skopiuje nazwy katalogów i podmieni ip na ip serwera 2 (nowego)
Ja myślałe zeby to zrobić komendą net use net use M: \\13.0.0.14\Magazyn net use zm1\\adress\zm2
Stare dyski zmapowane
Skopiować je do pliku
Usunać stare dyski
Zmapować nowe dyski z nowym ip z pliku
Program początkowo napisałem w AHK, ale po konsultacji na PW z autorem tematu, okazało się, że lepiej dopasowany do potrzeb będzie skrypt .bat
Oto i on
Ogólnie opis działania
Wyświetla aktualnie podłączone dyski i adresy
Pobiera potrzebne informacje do zmiennych
W pętli przechodzi do analizy
Odmontowuje dysk
Wyodrębnia stary adres i podmienia na nowy IP
Montuje „starą” literę dysku na nowy IP serwera
Koniec pętli i wyświetlanie aktualnych, zmienionych dysków
Mimo to, że wiadomo, jakie są najczęściej używane litery dysków, to program jest uniwersalny i remapuje wszystkie dostępne jakie znajdzie w terminalu
@echo off
setlocal ENABLEDELAYEDEXPANSION
set "noweIP=192.168.3.16"
net use
FOR /f "tokens=1-4" %%a IN ('net use') do (
IF "%%a" == "OK" (
call :analiza %%b %%c
) ELSE IF "%%a" == "Brak" (
call :analiza %%c %%d
)
)
goto :end
:analiza
set "dysk=%~1"
set "adresIP=%~2"
net use %dysk% /delete /y
for /f delims^=^\^ tokens^=1 %%p in ("%adresIP%") do (set stareIP=%%p)
call set adresIP=%%adresIP:!stareIP!=!noweIP!%%
echo Nowy dysk %dysk% %adresIP%
net use %dysk% %adresIP% /p:yes
net use
:end
pause
Zawartość okna należy zapisać w pliku tekstowym i zamienić jego rozszerzenie na .bat
Jakieś uproszczenia w kodzie mile widziane