Batch-datei: brauch Hilfe!

Forum Eigene Website, Hosting, Webdesign, Programmieren : Batch-datei: brauch Hilfe!

Tom's Hardware: 1,4 Mio. Mitglieder aus 6 verschiedenen Ländern beantworten alle Ihre Fragen über Computer-Technik und IT. Um Hilfe zu erhalten, registrieren Sie sich kostenlos!
Wort:    Username:           
 

Guten Tag,

ich bräuchte mal eine batch-datei, hab aba kaum ahnun von den befehlen.
ich hoffe, da kann mir jemand von euch helfen, ist von großer wichtigkeit.

also: ein programm muss gestartet werden. dies geht aber nur, wenn ein bestimmtes Netzlaufwerk (in diesem falle q:/) verbunden ist.

ich brauch also eine schleife, welche besagt, dass geprüft wird, ob q:/ verbunden ist, und falls nicht, zu q:/ verbunden wird.(dann wieder eine prüfung).

sobald die prüfung positiv ist, start des programms.


...könntet ihr mir einen quellcode für diese batch-datei schreiben?


vielen Dank schonma für eure mühe^^

Anzeigen

Hallo Crisfada,

Ich hab mal kurz was zusammengetippt:

@ECHO=OFF
CLS

:START
IF NOT EXIST Q:\NUL NET USE Q: \\server\freigabe
ping -n 5 localhost>NUL
IF EXIST Q:\NUL EXPLORER
REM ping -n 5 localhost>NUL

REM GOTO START

Kleine Erlärung:
Man schaut zuerst ob man auf Laufwerk Q: zugreifen kann (1. if)
Macht dann eine kurze pause -> 5 Sekunden (ich habe auf sleep verzichtet aus kompatibilitätsgründen)
Danach überprüft man nochmals den Zugriff auf Q: und startet in diesem Beispiel den Explorer.

Falls du das ganze ion eine Schlaufe packen willst kannst du die beiden REM Statements noch wegmachen.

Falls du was anderes brauchst brauche ich mehr Infos.


Der Code ist nur kurz zusammengebastelt, nichts professionelles. Sollte aber funktionieren

Antworten Soldier

das ping -n 5 localhost ist eine Interesante Idee, muss ich mir merken.

Aber was mich hier stört:
ist das Netzlaufwerk verbunden, aber der Server läuft nicht dann hängst du in einer Endlosschleife und es passiert nichts!

Vielleicht besser:

Code :
  1. @ECHO OFF
  2. CLS
  3. :START
  4. IF NOT EXIST Q: goto noQ
  5. goto ende
  6. :noQ
  7. ping -n 1 server >NUL
  8. if "%errorlevel%"=="0" NET USE Q: \\server\freigabe
  9. ping -n 5 localhost>NUL
  10. IF EXIST Q: goto ende
  11. rem ping -n 5 localhost>NUL
  12. rem GOTO START
  13. :ende
  14. EXPLORER Q:\



Ich überprüfe ob es Q gibt.
wenn nicht springe ich zu :noQ

Dann Pinge ich den Server, andwortet dieser wird das Q per net use verbunden.

Wenn das funktioniert hat gehe ich zum ende und starte den Explorer.
Dieser zeigt mir den inhalt von Q an.

Hier gilt wieder rem weg und du hast eine endlosschleife


Nachricht bearbeitet von bakudan am 21.03.2008 um 16:07:22
Antworten bakudan

So ein kleines Programm und ich mach immernoch Fehler ;)

IF NOT EXIST Q:

Dachte nicht, dass es ohne Q:\NUL funktionieren würde.

Schön, dass es doch noch ein paar QBasic und batch-File Schreiber gibt :)

Antworten Soldier

Soldier schrieb :

So ein kleines Programm und ich mach immernoch Fehler ;)

IF NOT EXIST Q:

Dachte nicht, dass es ohne Q:\NUL funktionieren würde.

Schön, dass es doch noch ein paar QBasic und batch-File Schreiber gibt :)



Ich wuste selbst nicht genau ob es mit Q: alleine funkt.
Konnte aber es gleich beim schreiben testen.

Nachdem ich selber so was auch habe (automatisch zu nem server verbinden) und ich aber checken will obs der richtige Rechner ist frage ich da nach einem Unterodner:
Q:\compile

Wegen Batch-Progen, das ist meine arbeit, zumindest ein Teil davon.

------------------------------ Rechtschreibung wird überbewertet.
Sie hilft aber ungemein bei der Verständlichkeit der Beiträge
Antworten bakudan

Und wie kann man diese Batch-Datei dann verwenden?

Antworten Elishah

speicherst sie einfach in einer txt und benennst dann die endung txt in bat um und kannst die datei dann starten

Antworten 3n1gm4

@All

Hallo habe die Datei für mich ein wenig Angepasst nur ist die Funktion noch nicht ganz so wie ich es mir Wünsche.

1. Diese soll prüfen ob ein Netzlaufwerk verbunden ist und wenn dies erfolgreich war ein Programm öffnen.
2. Sollte das Netzlaufwerk nicht verbunden sein dieses verbinden und das Programm öffnen.

1. und 2. funzen soweit siehe Code.

3. Das Fenster der Eingabeaufforderung soll nicht sichtbar sein bzw. nach Ablauf geschlossen werden!! (besser ersteres)
4. Ist das Netzlaufwerk nicht eingeschaltet bzw. nicht auffindbar eine Fehlermeldung ausgeben z.B.:
"Netzlaufwerk nicht eingeschaltet" oder ähnlich.


Ich Danke euch im Vorraus

Gruß urkrossi

Code :
  1. @ECHO OFF
  2. CLS
  3. :START
  4. IF NOT EXIST K: goto noK
  5. goto ende
  6. :noK
  7. ping -n 1 Fnd >NUL
  8. if "%errorlevel%"=="0" NET USE K: \\Fnd\AVDaten
  9. ping -n 5 localhost>NUL
  10. IF EXIST K: goto ende
  11. rem ping -n 5 localhost>NUL
  12. rem GOTO START
  13. :ende
  14. C:\Programme\Aktenverwaltung\Aktenverwaltung.exe


Nachricht bearbeitet von urkrossi am 11.08.2008 um 20:12:53
Antworten urkrossi

Hallo

hab deine PM leider erst jetzt gelesen.

Hier ein paar hilfestellungen:
Wenn das CMD fenster minimirt sein soll dann musst du es aus einer anderen Bat Datei oder einer Verknüfung starten:
und zwar so:
Bat datei:

Code :
  1. @Echo off
  2. start "" /MIN cmd /C "[Ffad zur batdatei]


Verknüpfung:
Einfach eine Verknüpfung auf deine Bat datei.
Und in den Eigenschafte:
Minimiert startet. ( im Tab "Verknüpfung" )

So wegen der Fehlermeldung wenn es nicht funkt.
Im moment wird es so lange versucht den Server zu erreichen, ohne limit.

Welches Windows verwendest du?
ab WinXP können wir einbauen das er es nur X mal versuchen soll.

les dir mal die hilfeausgabe von set /?, cmd /? und start /? durch.

Hier noch eine kleine anpassung, sie im @rem.

Code :
  1. @ECHO OFF
  2. CLS
  3. :START
  4. IF NOT EXIST K: goto noK
  5. goto ende
  6. :noK
  7. ping -n 1 Fnd >NUL
  8. if "%errorlevel%"=="0" NET USE K: \\Fnd\AVDaten
  9. ping -n 5 localhost>NUL
  10. IF EXIST K: goto ende
  11. rem ping -n 5 localhost>NUL
  12. rem GOTO START
  13. :ende
  14. @rem verwende start, dadurch wird die Exe gestarte und die Batdatei beendet sich.
  15. start "" C:\Programme\Aktenverwaltung\Aktenverwaltung.exe


Nachricht bearbeitet von bakudan am 13.08.2008 um 12:04:24
------------------------------ Rechtschreibung wird überbewertet.
Sie hilft aber ungemein bei der Verständlichkeit der Beiträge
Antworten bakudan
- 0 +

und was macht er wenn das LW berreits woander hin verbunden ist :D

Antworten 7FUN

hmm gute frage, hier ein tipp dazu:

ein file mit einem bestimmten namen auf das LW stellen.

Code :
  1. @ECHO OFF
  2. CLS
  3. :START
  4. IF NOT EXIST K: goto noK
  5. goto ende
  6. :noK
  7. ping -n 1 Fnd >NUL
  8. if "%errorlevel%"=="0" NET USE K: \\Fnd\AVDaten
  9. ping -n 5 localhost>NUL
  10. IF EXIST K: goto ende
  11. rem ping -n 5 localhost>NUL
  12. rem GOTO START
  13. :ende
  14. @rem hier auf das besondere file checken, bei mir fnd.sem
  15. if not exist k:\fnd.sem goto err1.
  16. @rem verwende start, dadurch wird die Exe gestarte und die Batdatei beendet sich.
  17. start "" C:\Programme\Aktenverwaltung\Aktenverwaltung.exe
  18. goto ende2
  19. :err1
  20. echo Falsche LW gemountet, bitte checken Sie die Einstellungen.
  21. pause
  22. goto ende2
  23. :ende2



PS:
Hier sieht man wieder warum die Variablen und Sprungpunkte in Batdatein die lustigsten namen haben.
Weil das teil immer größer wird...


Nachricht bearbeitet von bakudan am 13.08.2008 um 14:57:24
------------------------------ Rechtschreibung wird überbewertet.
Sie hilft aber ungemein bei der Verständlichkeit der Beiträge
Antworten bakudan

Hallo,

danke für deine Hilfe. Das BS ist WinXP. Bei der zweiten *.bat Version startet die Software nicht, in der ersten funktioniert es.

Was ich nicht ganz Verstehe:

Zitat :

und was macht er wenn das LW berreits woander hin verbunden ist :D


wie meint er das? Darf das Laufwerk nicht mit mehreren PC`s verbunden sein?


Im Prinzip hat es sich auch schon erledigt hab eine andere Variante gefunden.

Mit Hilfe eines *.vbs Files siehe hier:

Code :
  1. On Error Resume next
  2. Dim fileSys
  3. Dim objRet
  4. Dim objNet
  5. Dim objShell
  6. Dim objBin
  7. 'Zuweisen zum Scripting.FileSystemObject
  8. Set filesys = CreateObject("Scripting.FileSystemObject" )
  9. 'Prüfen ob K: schon existiert
  10. If not filesys.DriveExists("K:" ) Then
  11. Set objNet = CreateObject("WScript.Network" )
  12. objNet.MapNetworkDrive "K:" , "\\Fnd\AVDaten"
  13. Else
  14. Set objNet = CreateObject("WScript.Network" )
  15. objNet.RemoveNetworkDrive "K:", True, True
  16. objNet.MapNetworkDrive "K:" , "\\Fnd\AVDaten"
  17. End If
  18. 'Nochmals prüfen ob Verbindung erfolgreich
  19. If not filesys.DriveExists("K:" ) Then
  20. objRet = Msgbox("Laufwerk K: existiert nicht und konnte auch nicht verbunden werden" )
  21. Else
  22. Set objShell = WScript.CreateObject("WScript.Shell" )
  23. Set objBin = objShell.run("C:\Programme\Aktenverwaltung\Aktenverwaltung.exe" )
  24. End if
  25. Set filesys = Nothing
  26. Set objNet = Nothing



Aber trotzdem herzlichen Dank.


MfG urkrossi

Antworten urkrossi
- 0 +

genau so was in der art hatte ich gemeint:
objNet.RemoveNetworkDrive "K:", True, True

denn ist das LW schon vergeben läst es sich nicht mappen.
alternativ mappen ohne LW Buchstaben (falls möglich)

bei mir wäre das skript ein 3 - 4 zeiler:
disconnect, connect, start , eine prüfung hätt ich mir gespart da ansonsten ja eh nichts geht.

Antworten 7FUN
Tom's Hardware > Foren > Eigene Website, Hosting, Webdesign, Programmieren > Batch-datei: brauch Hilfe!
Zu:

Es gibt 92 identifizierte und nicht identifizierte User. Zur Ansicht der Liste identifizierter User, Hier klicken.

Wichtiger Hinweis

Dieses Thema ist länger als 6 Monate inaktiv.
Bitte überprüfen Sie, ob Ihr beabsichtigter Kommentar noch einen Mehrwert bringt oder das Anlegen eines neuen Themas nicht besser wäre.

Antwort hinzufügen Abbrechen
Google Anzeigen
  • Die Community jetzt fragen
  • Veröffentlichen
Anzeige
Die folgenden Community-Mitglieder erhielten Auszeichnungen!
Wir gratulieren:
  • 01:00 Penske1 hat das Abzeichen Niedergelassen erhalten
  • 01:00 whiskey1981 hat das Abzeichen Niedergelassen erhalten
  • 01:00 bison74 hat das Abzeichen Niedergelassen erhalten
  • 01:00 Fiep_Fiep hat das Abzeichen Leser erhalten
  • 01:00 bligh hat das Abzeichen Leser erhalten
  • 01:00 status hat das Abzeichen Leser erhalten
  • 01:00 Braincrawler hat das Abzeichen Niedergelassen erhalten
  • 01:00 Z28LET hat das Abzeichen Leser erhalten
  • 01:00 Metalfreak hat das Abzeichen Niedergelassen erhalten
  • 01:00 Anatorax hat das Abzeichen Niedergelassen erhalten
Anzeigen