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

Ein Batch von Wechseldatenträger soll ein Batch am Festplattenlaufwerk öffnen....Danach das Batch auf Wechseldatenträger schliessen und Stick entfernen

Frage Entwicklung Batch & Shell

Mitglied: Traxtormer

Traxtormer (Level 1) - Jetzt verbinden

19.08.2010 um 09:42 Uhr, 6066 Aufrufe, 6 Kommentare

Hallo Leute,

ich will mit einem Batch (eigentlich will ich es später alles auf EXE ändern), dass auf einem USB-Stick läuft, ein Batch/EXE auf der Festplatte öffnen und das, von dem geöffnet wurde beenden.
Das Problem ist nur, dass sich das Batch vom Stick nicht schließen lässt (Task-Manager noch immer sichtbar).
Danach soll der Stick deaktiviert werden, er lässt sich aber nicht.

Code vom EXE auf Stick

01.
.. 
02.
.. 
03.
.. 
04.
echo Copying of the files was successful! %date% %time% >> C:\Log.txt 
05.
echo Copying of the files was successful! 
06.
pause 
07.
:end_usb 
08.
 
09.
echo ---------------------------------------- 
10.
 
11.
call "C:\INSTALL\Server_setup.exe" 
12.
 
13.
exit 
14.
 
Danach soll jetzt Server_setup auf C: gestartet werden und der USB-Stick deaktiviert werden.

01.
.. 
02.
.. 
03.
echo ---------------------------------------- 
04.
 
05.
TASKKILL /F /T /IM RTOOL.exe 
06.
 
07.
echo Deactivating USB-Stick! 
08.
rundll32 shell32.dll,Control_RunDLL hotplug.dll 
09.
 
10.
echo ---------------------------------------- 
11.
.. 
12.
..
Der Stick lässt sich einfach nicht beenden?!

SG
Mitglied: 60730
19.08.2010 um 10:59 Uhr
Moin,

  • wenn eine bat auf einem Stick läuft, kann man logischerweise den Stick nicht auswerfen.
  • wenn du die bat verexen willst - erzeugst du - beim starten des bat exe eine Version der bat im %temp% Ordner.

Von daher finde ich das bat verexen zwar hirnrissig - aber in deinem speziellen Fall wird dann die bat wenigstens im Temp - nicht auf dem Stick benutzt und daher wäre die Wahrscheinlichkeit, dass die bat den Stick auswerfen kann größer.

Gruß
Bitte warten ..
Mitglied: Biber
19.08.2010 um 11:25 Uhr
Moin traxformer,

zur Verdeutlichung: mit "..wenn eine bat auf einem Stick läuft, " meint T-Mo, dass der Batch ja noch aktiv ist,
weil du dein Setup-Geraffel mit "Call ...Setup.exe" aufrufst.
Ist mir einerseits auch ein Rätsel, warum es denn noch mal zurück in den Batch gehen soll, nur um dort ein "exit" zu machen...
Andererseits finde ich es dann schon wieder stimmig, wenn du dieses Skriptchen für so ausgereift hältst, dass du daraus eine *.Exe erzeugen willst, damit es professioneller aussieht.
Bzw. keiner mehr den Sourcecode lesen oder bei YouTube einstellen kann.

Grüße
Biber
Bitte warten ..
Mitglied: Traxtormer
19.08.2010 um 11:49 Uhr
Hello Leute,

das ganze ist natürlich nur ein kleiner Teil meines kleinen "Programms". Da das ganze dann doch recht umfasssend ist und ich sehr viel mühe und Zeit (Lernzeit ) reingesteckt habe, will ich von den ganzen dann natürlich alleine den Sourcecode besitzen. => Deshalb verexen (Ich denke, dass es dennoch Möglichkeiten gibt aus einem EXE den Sourcecode zu extrahieren ODER?)

Ihr habt recht, ich will dennoch nur ein batch vom stick starten, dass ein anderes Bat im C:\.,.. Ordner kopiert und dieses dann ausführt. Parallel soll das bat auf dem Stick dann geschlossen werden, damit der Stick deaktiviert werden kann. Das File sollte auf jeden Fall zuerst auf dem Stick gestartet werden. Ich habe inziwschen auch keine andere Möglichkeit gefunden, als das der "Starter" sich den restlichen Code auf die Festplatte kopiert und das Programm dann lokal weiterarbeitet. Dennoch schaffe ich es nicht, dass sich der Stick ohne Fehlermeldung deaktivieren lässt, obwohl kein Fenster was darauf zugreifen würde, geöffnet ist. => Deswegen habe ich es mal mit taskkill probiert.

Könnt Ihr mir da weiterhelfen?

SG,

Daniel
Bitte warten ..
Mitglied: 60730
19.08.2010 um 13:28 Uhr
Moin,

[OT]
wie ich dir bereits schrub...

  • zur Laufzeit entpackt sich die exe eh zur bat
  • wenn ich meine bescheidenen Werke in Sachen Bat/cmd betrachte - und sehe das Bastla, Biber Lot, MIniversum, und und und mal für jemanden anderen gebaut haben.....

Dann - sehe ich, das die von mir erfundenen Räder von anderen zu einer anderen Zeit fast genauso gestrickt wurden.

Und jemand, der einfache/doppelte/dreifache For Schleifen entziffern kann - der kann auch im Taskmanager sehen, das eine exe eine cmd gestartet hat und spätestens dann - dazu muß man also die exe nichtmal durch einen "Editor" jagen - sieht man den quellencode.

Und selbst wenn man nicht so "helle" ist - die Zeile 7
echo Deactivating USB-Stick!
entlarvt deine Batch als Batch....

btw: Ich finde Opensource genial - und der "Seitenhieb" sei gestattet - alles was ich für andere schreibe - schreibe ich für alle anderen - nicht für diesen speziellen Fragesteller alleine.

Opensource find ich gut und jeder - der was kann - hat von anderen gelernt.
[/OT]

Ohne deine komplette bat zu shen, dann dir keiner schreiben - wo es klemm - denn der zusammengeklaubte Befehl rundll32 shell32.dll,Control_RunDLL hotplug.dll funktioniert üblicherweise -wenn wirklich nichts mehr läuft.


Gruß
Bitte warten ..
Mitglied: Traxtormer
19.08.2010 um 13:54 Uhr
OK da hast du recht
echo ist schnell entlarvt........naja es war ja einen versuch wert ^^

Es geht mir da darum, dass dieser "Code" der Batches nur durch mich erfolgen sollen und nicht durch andere Personen. Aber das hat sich ja wahrscheinlich sowieso erledigt, da man es leicht einsehen kann....


Die Sache ist folgende:

Es klemmt eigentlich nur noch bei diesem deaktivieren des Sticks. Ansonsten ist das ganze restliche Batch eher nur mit copy befehlen und kleinen Schleifen versehen, also habe ich mir gedacht ich gehe gleich zum eigentlichen Thema und lasse das andere einfach weg.

Hättest du trotzdem vielleicht ein paar Ideen wie man das Ganze bewerkstelligen kann?

SG
Bitte warten ..
Mitglied: Friemler
20.08.2010 um 06:06 Uhr
Hallo Traxtormer,

zum Auswerfen von USB-Sticks gibt es das Tool RemoveDrive von Uwe Sieber, erhältlich hier. Das Tool wirft USB-Sticks direkt aus, ohne das ein Dialog erscheint wie bei der Methode mit shell32.dll.

Hier zwei Beispielskripte zur Lösung Deiner Aufgabe.

Zuerst das Skript, das vom Stick gestartet werden soll, die Vorbereitungen macht und dann die ServerSetup.bat startet:
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
set "HomeDir=%~dp0" 
06.
if "%HomeDir:~-1%" neq "\" set "HomeDir=%HomeDir%\" 
07.
 
08.
cd /d "%HomeDir%" 
09.
 
10.
:: Mach irgendwas... 
11.
 
12.
copy "ServerSetup.bat" "%USERPROFILE%" > NUL 
13.
cmd /c "call "%USERPROFILE%\ServerSetup.bat" "%HomeDir%"" 
14.
 
15.
endlocal
Die ServerSetup.bat:
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
set "HomeDir=%~dp0" 
06.
 
07.
set "StickDrive=%~d1" 
08.
set "StickDir=%~1" 
09.
 
10.
cd /d "%HomeDir%" 
11.
 
12.
"%StickDir%RemoveDrive" %StickDrive% -L -W:1000 
13.
 
14.
:: Mach irgendwas... 
15.
 
16.
del ServerSetup.bat 
17.
 
18.
endlocal
Das erste Skript, die ServerSetup.bat und RemoveDrive.exe müssen im selben Verzeichnis abgelegt sein. Das kann aber auch ein beliebiges Unterverzeichnis sein. Durch Zeile 5 wird das Verzeichnis ermittelt, in dem das Skript gespeichert ist. In Zeile 6 wird ein Backslash an den Pfad gehängt, wenn das Verzeichnis nicht das Wurzelverzeichnis ist. Dadurch hat HomeDir in allen Fällen ein einheitliches Format. In Zeile 8 wird in das Verzeichnis gewechselt, in dem die Dateien gespeichert sind. Durch den Parameter /D des CD-Befehls wird bei Bedarf auch direkt das aktuelle Laufwerk gewechselt. In Zeile12 wird die ServerSetup.bat auf die Festplatte kopiert (hier ins Benutzerprofil). Die Statusmeldung über den Erfolg der Kopieraktion wird durch >NUL unterdrückt. In Zeile 13 wird die ServerSetup.bat in einer separaten Instanz von CMD.exe gestartet. Als Parameter wird das Verzeichnis, in dem die Dateien auf dem USB-Stick gespeichert sind, übergeben.

In der ServerSetup.bat wird in Zeile 5 wieder das Verzeichnis ermittelt, in dem das Skript gespeichert ist. In Zeile 7 wird aus dem übergebenen Parameter der Laufwerksbuchstabe des USB-Sticks ermittelt. In Zeile 10 wird das aktuelle Verzeichnis auf den Pfad, unter dem die ServerSetup.bat gespeichert ist, gesetzt. Der Parameter /D des CD-Befehls sorgt dafür, das bei Bedarf auch direkt das Laufwerk gewechselt wird. In Zeile 12 wird RemoveDrive vom USB-Stick ausgeführt und damit der Stick ausgeworfen. Der Parameter -L sorgt dafür, das so lange versucht wird, den Stick auszuwerfen, bis die Aktion erfolgreich war. -W:1000 wartet 1000 ms bis zur Programmbeendigung. In Zeile 16 entfernt sich die ServerSetup.bat selbst vom System, deshalb darf nach dem DEL-Befehl kein relevanter Code mehr stehen.

RemoveDrive muss vom Stick, der ausgeworfen werden soll, ausgeführt werden. Es ist für Windows 2000 bis Windows 7 geeignet und existiert in einer 32Bit- und einer 64Bit-Version. Die Prozessorarchitektur des Hostsystems lässt sich über die Systemvariable PROCESSOR_ARCHITECTURE abfragen; für 32Bit-Systeme hat sie den Wert x86.

Gruß
Friemler
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Hardware
gelöst CD-Funktion von USB-Stick entfernen (6)

Frage von honeybee zum Thema Hardware ...

Basic
gelöst Mit Visual Basic Batch Datei öffnen (26)

Frage von Flodsche zum Thema Basic ...

Netzwerkmanagement
gelöst Batch Datei auf anderem PC öffnen (35)

Frage von Flodsche zum Thema Netzwerkmanagement ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...