Automatyczne mapowanie pod innym adresem

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 zostaˆo 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

Dziękuję za wszelką pomoc.

Witaj.

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?

Mógłbym to skrobnąć w jakimś języku :wink:

Pozdrawiam serdecznie
Juliusz

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

1 polubienie

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 :wink:

Pozdrawiam serdecznie
Juliusz

2 polubienia

Dziękuję za pomoc jeszcze raz. :smiley:
Skrypt działa i sprawdza się w 100%

1 polubienie