Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Temporäres Netzlaufwerk über pushd mehrfach benutzbar?

Frage Entwicklung Batch & Shell

Mitglied: Knumskull

Knumskull (Level 1) - Jetzt verbinden

09.02.2010 um 14:33 Uhr, 5473 Aufrufe, 7 Kommentare

Möglichkeit zum mehrfachen benutzen eines temporären Netzlaufwerkes welches durch pushd erzeugt wurde.

Hallo,

ich habe ein Startskript für ein Programm, welches im Netzwerk liegt.
Zum starten wird in das Verzeichnis mittels 'pushd' navigiert.
Dabei wird ein Netzlaufwerk erzeugt.

Alles schön und gut, jedoch wird das Programm jetzt häufiger gestartet, was irgendwann zur Folge hat, dass das Alphabet voll ist und keine Netzlaufwerke mehr erzeugt werden können.

Wie kann ich jetzt erreichen, dass 'pushd' so intelligent ist, dass wenn ein Netzlaufwerk zu dem Pfad schon vorhanden ist, er es nicht nochmal neu erzeugt.

Meine erste Idee war, dass ich mittels 'net use' schaue, ob schon eine Verbindung und Laufwerk zu dem Net-Share exisitiert.

01.
:CHECK_APPL_DRIVE 
02.
net use | find "\\cae-samba\appl" > %TEMP%\indi_tmp.tmp 
03.
if errorlevel 1 exit /b 1 
04.
for /F "tokens=1,2 delims=: " %%i in (%TEMP%\indi_tmp.tmp) do ( 
05.
	if not "%%i" == "" ( 
06.
		echo %%i: > %TEMP%\indi_tmp_2.tmp 
07.
		for /F "tokens=1 " %%j in (%TEMP%\indi_tmp_2.tmp) do ( 
08.
			set CAE_HOME=%%j 
09.
10.
11.
12.
del /F %TEMP%\indi_tmp_2.tmp 
13.
del /F %TEMP%\indi_tmp.tmp 
14.
 
15.
goto :eof
funktioniert soweit, jedoch wenn ich die 'Master-Applikation' beende, ist auch das Netzlaufwerk weg.
Hat jemand eine Idee?

Gruß,
Steffen
Mitglied: 60730
09.02.2010 um 14:47 Uhr
Servus,

was ich nicht so ganz verstehe ist doch...
jedoch wenn ich die 'Master-Applikation' beende, ist auch das Netzlaufwerk weg.

denn das verhalten findet man in deinen zeilen nicht
Und wenn ich schon dabei bin, warum wird denn ein temp. Laufwerksmapping gemacht, wenn das laufwerk auf nach dem beenden der Masterapp vorhanden sein soll?

Lass dich doch dazu mal etwas genauer aus.

gruß
Bitte warten ..
Mitglied: Knumskull
09.02.2010 um 14:54 Uhr
unter 'Master-Applikation' meinte ich die zu erst gestartete Apllikation.

Was ich halt nicht möchte, das ich ein Netzlaufwerk fest verbinde, da ich nie sichergehen kann, ob das entsprechende Laufwerk noch frei ist.
Bisher hatte ich keine solche Probleme, jetzt wollen die Benutzer aber eben das Programm mehrfach öffnen. Was an die besagt Alphabets-grenze stößt.

Der aufruf der app funktioniert wie folgt (in kurzform):
01.
pushd \\cae-samba\appl\indi 
02.
call indi.exe 
03.
popd

Vielleicht kurz zusammengefasst.
- es wird immer die gleiche Applikation gestartet
- pro Start wird ein Netzlaufwerk verbunden

gruß
steffen
Bitte warten ..
Mitglied: 60730
09.02.2010 um 15:02 Uhr
?

gib doch mal pushd /? und Popd /? in einer Dosbox ein....

"in kurzform"
du mappst ein UNC Pfad
callst eine Anwendung
wechselst in dann erst in das verzeichnis und beendest das mapping (wenn die Befehlserweiterungen aktiviert sind)?
Ich glaube 2010 ist so ein Jahr wo ich noch viel lernen kann- Hoffentlich kommt bald Herr Alzheimer und erlöst mich
Was ich halt nicht möchte, das ich ein Netzlaufwerk fest verbinde, da ich nie sichergehen kann, ob das entsprechende Laufwerk noch frei ist.
oh jee - der Admin, der keinen Überblick über seine Laufwerksmappings hat ist immer klar im Nachteil - und der Seitenhieb mit dem Zaunpfahl von wegen, wenn alle Anwendungen/Laufwerke per pushd gemappt werden - kein Wunder...

01.
for %i in (z y x w v u) do if not exist %i:\ net use %i \\cae-samba\appl\indi && goto weiter 
02.
:weiter
Bitte warten ..
Mitglied: Knumskull
09.02.2010 um 15:13 Uhr
oh jee - der Admin, der keinen Überblick über seine Laufwerksmappings hat ist immer klar im Nachteil

hier arbeiten ca. 40k leute ... es gibt unzählige Abteilungen, die irgendwelche Programme bereitstellen und dann sind da noch die Anwender. Man kann sich hier nicht sicher sein.
Und auf was verlassen kann man sich hier schon gleich gar nicht.

Aber dein Ansatz ist ausbaubar ... ab und zu denke ich schon ein bissl kompliziert.
Bitte warten ..
Mitglied: 60730
09.02.2010 um 16:43 Uhr
Aber dein Ansatz ist ausbaubar face-smile ... ab und zu denke ich schon ein bissl kompliziert.

yupp und ich setze manchmal zu wenig an - oder mappe zuviele Laufwerke

01.
for %%i in (u v w x y z) do if not exist %%i:\ Set "newdrive=%%i:\" 
02.
net use %newdrive% \\cae-samba\appl\indi
Bitte warten ..
Mitglied: Knumskull
11.02.2010 um 16:37 Uhr
Bin dummerweise krank geworden und kann das Skript grad nicht vollenden.

Aber deinen Ansatz habe ich übernommen.
Also was ich jetzt mache, ist folgendes:
- testen ob ein netzlaufwerk besteht. Wenn ja, Laufwerksbuchstaben extrahieren und für den Pfad verwenden.
- wenn laufwer nicht besteht, anlegen und Laufwerksbuchstaben als Pfad verwenden.
- Programm starten
- nach beenden des Programmes testen, ob noch prozesse des Programmes offen sind. falls nicht, wird auch die Netzwerkverbindung wieder gelöst.

Ich will halt am Ende immer alles wieder aufräumen ... hinterlasse ungern spuren.
Bitte warten ..
Mitglied: Knumskull
19.02.2010 um 19:42 Uhr
So, jetzt gebe ich einfach mal die entsprechenden Funktionen an.
Also es läuft jetzt. Gemacht habe ich das ganze nach der Anleitung wie im vorherigen Post geschrieben.

Nachfolgend das ganze Skript, was zum Starten des Programmes benutzt wird.

01.
setlocal enableextensions enabledelayedexpansion 
02.
 
03.
rem +---------------------------------------------- 
04.
rem + CAE-Environment 
05.
rem +---------------------------------------------- 
06.
set CAE_HOME=\\cae-samba\appl 
07.
call :CHECK_APPL_DRIVE 
08.
if errorlevel 1 call :CREATE_NETDRIVE 
09.
 
10.
rem +---------------------------------------------- 
11.
rem + Parameteruebergabe 
12.
rem +---------------------------------------------- 
13.
set VERSION=%1 
14.
set STATE=%2 
15.
shift /1 
16.
shift /1 
17.
 
18.
rem +---------------------------------------------- 
19.
rem + Variablen deklarieren 
20.
rem +---------------------------------------------- 
21.
set PROGRAMM=indiform 
22.
 
23.
 
24.
rem +---------------------------------------------- 
25.
rem + Environment fuer %PROGRAMM% setzten 
26.
rem +---------------------------------------------- 
27.
rem copy setting-files into application data 
28.
set INDI_APPDATA_LOCAL=%APPDATA%\IndiForm 
29.
set INDI_APPDATA_REMOTE=!CAE_HOME!\%PROGRAMM%\_common\appdata_default 
30.
set INDI_APPDATA_REMOTE_PROCESS=%INDI_APPDATA_REMOTE%\Settings\Process 
31.
set INDI_APPDATA_REMOTE_STEP=%INDI_APPDATA_REMOTE%\Settings\Step 
32.
 
33.
 
34.
rem +---------------------------------------------- 
35.
rem + Copy default Settings to User-Workstation 
36.
rem +---------------------------------------------- 
37.
if not exist "%INDI_APPDATA_LOCAL%" ( 
38.
	echo / Initial-Settings werden kopiert ... 
39.
	mkdir "%INDI_APPDATA_LOCAL%" >NUL 
40.
	xcopy %INDI_APPDATA_REMOTE% "%INDI_APPDATA_LOCAL%" /E /Y >NUL 
41.
) else ( 
42.
	echo / Settings werden kopiert ... 
43.
	xcopy %INDI_APPDATA_REMOTE_PROCESS% "%INDI_APPDATA_LOCAL%\Settings\Process\" /S /E /Y >NUL 
44.
	xcopy %INDI_APPDATA_REMOTE_STEP% "%INDI_APPDATA_LOCAL%\Settings\Step\" /S /E /Y >NUL 
45.
	echo / Materialverzeichnis in Configfiles anpassen 
46.
	@call :REMOVE_INDEED_MATLIB_DIR 
47.
48.
 
49.
:MAIN 
50.
rem + Architektur bestimmen 
51.
echo /--------------------------------------------- 
52.
echo / Architektur wird bestimmt ... 
53.
call :SET_ARCH 
54.
rem + Programm starten 
55.
echo / %PROGRAMM% %VERSION% wird gestartet ... 
56.
echo /--------------------------------------------- 
57.
call :RUN 
58.
 
59.
goto :eof 
60.
 
61.
 
62.
rem +---------------------------------------------- 
63.
rem + Subroutinen 
64.
rem +---------------------------------------------- 
65.
 
66.
rem +---------------------------------------------- 
67.
rem + Aufruf des Programmes 
68.
rem +---------------------------------------------- 
69.
:RUN 
70.
call :VER_SWITCH 
71.
pushd !PROG_PATH! 
72.
sleep 2 
73.
call %PROG_EXEC% %* 
74.
if errorlevel 1 call :Error "Fehler beim Starten von %PROG_EXEC%" 1>NUL 
75.
rem popd 
76.
call :FINAL_CHECK 
77.
goto :eof 
78.
 
79.
 
80.
rem +---------------------------------------------- 
81.
rem + Switch fuer unterschiedliche Versionen 
82.
rem +---------------------------------------------- 
83.
:VER_SWITCH 
84.
if /i "%VERSION%"=="default" set VERSION=0.4.0000 
85.
 
86.
if "%VERSION%"=="0.2.4702" ( 
87.
	set PROG_PATH=!CAE_HOME!\%PROGRAMM%\%STATE%\%VERSION%_%ARCH%\IndiForm 
88.
	set PROG_EXEC=indiform.exe 
89.
	goto :eof 
90.
91.
if "%VERSION%"=="0.2.4897" ( 
92.
	set PROG_PATH=!CAE_HOME!\%PROGRAMM%\%STATE%\%VERSION%_%ARCH%\IndiForm 
93.
	set PROG_EXEC=!CAE_HOME!\%PROGRAMM%\%VERSION%_%ARCH%\IndiForm\indiform.exe 
94.
	goto :eof 
95.
96.
if "%VERSION%"=="0.2.4931" ( 
97.
	set PROG_PATH=!CAE_HOME!\%PROGRAMM%\%STATE%\%VERSION%_%ARCH%\IndiForm 
98.
	set PROG_EXEC=indiform.exe 
99.
	goto :eof 
100.
101.
if "%VERSION%"=="0.2.5501" ( 
102.
	set PROG_PATH=!CAE_HOME!\%PROGRAMM%\%STATE%\%VERSION%_%ARCH%\IndiForm 
103.
	set PROG_EXEC=indiform.exe 
104.
	goto :eof 
105.
106.
if "%VERSION%"=="0.3.0000" ( 
107.
	set PROG_PATH=!CAE_HOME!\%PROGRAMM%\%STATE%\%VERSION%_%ARCH% 
108.
	set PROG_EXEC=IndiForm.exe 
109.
	goto :eof 
110.
111.
if "%VERSION%"=="0.4.0000" ( 
112.
	set PROG_PATH=!CAE_HOME!\%PROGRAMM%\%STATE%\%VERSION%_%ARCH% 
113.
	set PROG_EXEC=IndiForm.exe 
114.
	goto :eof 
115.
116.
goto :eof 
117.
 
118.
rem +---------------------------------------------- 
119.
rem + Subroutine entfernen der Config-Zeile fuer 
120.
rem + die MatLib in ProgramSettings.conf 
121.
rem +---------------------------------------------- 
122.
:REMOVE_INDEED_MATLIB_DIR 
123.
set SETTINGS_FILE_ORIG=%APPDATA%\IndiForm\Settings\ProgramSettings.conf 
124.
set SETTINGS_FILE_COPY=%TEMP%\ProgramSettings.conf.orig 
125.
set SETTINGS_FILE_TEMP=%TEMP%\ProgramSettings.conf.tmp 
126.
 
127.
copy /Y "%SETTINGS_FILE_ORIG%" %SETTINGS_FILE_COPY% >NUL 
128.
copy /Y NUL "%SETTINGS_FILE_TEMP%" > NUL 
129.
 
130.
for /F "tokens=*" %%i in (%SETTINGS_FILE_COPY%) do ( 
131.
    echo %%i | find /i "INDEED_Executables" >NUL 
132.
    if errorlevel 1 ( 
133.
	echo %%i | find /i "INDEED_Material_Library" >NUL 
134.
	if errorlevel 1 ( 
135.
	  echo %%i >> "%SETTINGS_FILE_TEMP%" 
136.
137.
138.
139.
 
140.
move /Y "%SETTINGS_FILE_ORIG%" "%SETTINGS_FILE_ORIG%.old" >NUL 
141.
move /Y "%SETTINGS_FILE_TEMP%" "%SETTINGS_FILE_ORIG%" >NUL 
142.
del /F "%SETTINGS_FILE_COPY%" >NUL 
143.
 
144.
goto :eof 
145.
 
146.
rem +---------------------------------------------- 
147.
rem + Subroutine zum herausfinden der Architektur 
148.
rem +---------------------------------------------- 
149.
:SET_ARCH 
150.
  rem # Prozessorarchitektur bestimmen 
151.
  if "%PROCESSOR_ARCHITECTURE%"=="x86" ( 
152.
    set ARCH=win32 
153.
	goto :eof 
154.
  )  
155.
  if "%PROCESSOR_ARCHITECTURE%"=="AMD64" ( 
156.
    set ARCH=win64 
157.
	goto :eof 
158.
159.
  call :Error "Architektur wird nicht unterstuetzt!" 
160.
161.
goto :eof 
162.
 
163.
 
164.
:CREATE_NETDRIVE 
165.
for %%i in (z y x w v u t s r) do ( 
166.
	if not exist %%i:\ net use %%i: !CAE_HOME! /PERSISTENT:NO >NUL 
167.
	if not errorlevel 1 exit /b 0 
168.
169.
call :CHECK_APPL_DRIVE 
170.
goto :eof 
171.
 
172.
 
173.
rem +---------------------------------------------- 
174.
rem + CHECK_APPL_DRIVE 
175.
rem +---------------------------------------------- 
176.
:CHECK_APPL_DRIVE 
177.
 
178.
net use | find "cae-samba\appl" > %TEMP%\indi_tmp.tmp 
179.
if errorlevel 1 exit /b 1 
180.
for /F "tokens=1,2 delims=: " %%i in (%TEMP%\indi_tmp.tmp) do ( 
181.
	if not "%%i" == "" ( 
182.
		echo %%i: > %TEMP%\indi_tmp_2.tmp 
183.
		for /F "tokens=1 " %%j in (%TEMP%\indi_tmp_2.tmp) do ( 
184.
			set CAE_HOME=%%j 
185.
186.
187.
188.
del /F %TEMP%\indi_tmp_2.tmp >NUL 
189.
del /F %TEMP%\indi_tmp.tmp >NUL 
190.
 
191.
goto :eof 
192.
 
193.
rem +---------------------------------------------- 
194.
rem + FINAL_CHECK 
195.
rem +---------------------------------------------- 
196.
:FINAL_CHECK 
197.
rem check if indiform running 
198.
tasklist /FI "IMAGENAME eq IndiForm.exe" 2>NUL | find /I "indiform" >NUL 
199.
if errorlevel 1 net use !CAE_HOME! /delete /yes 
200.
 
201.
goto :eof 
202.
 
203.
 
204.
 
205.
rem +---------------------------------------------- 
206.
rem + Error-Sektion 
207.
rem +---------------------------------------------- 
208.
:Error 
209.
echo /--------------------------------------------/ 
210.
echo / Fehler beim Aufruf von %PROGRAMM% %VERSION% 
211.
echo / 
212.
echo / Fehler: 
213.
echo / %1 
214.
echo / 
215.
echo / Bitte den CAE-Support kontaktieren 
216.
echo. 
217.
pause && exit 1 
218.
goto :eof 
219.
 
220.
endlocal 
221.
 
Sollten Fragen aufkommen, einfach fragen
LG Knums
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(5)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 10
Surface 4 Pro Netzlaufwerk verbinden (4)

Frage von Yannosch zum Thema Windows 10 ...

Windows Netzwerk
Netzlaufwerk offline verfügbar für Mac

Frage von PharIT zum Thema Windows Netzwerk ...

Outlook & Mail
Outlook Erinnerung mehrfach

Frage von Caro90 zum Thema Outlook & Mail ...

Windows 10
VPN Netzlaufwerk leer (4)

Frage von Edaseins zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (17)

Frage von Unwichtig zum Thema Netzwerkmanagement ...