Top-Themen

Aktuelle Themen (A bis Z)

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 exe Datei zum Öffnen einer anderen Datei

Mitglied: Amateur01

Amateur01 (Level 1) - Jetzt verbinden

29.10.2017 um 21:23 Uhr, 1331 Aufrufe, 15 Kommentare, 2 Danke

Hallo, ich ein kompletter Anfänger, der ein kleines Programm schreiben wollte, um einen Löschvorgang zu automatisieren.

Irgendwann hatte ich dann eine Batch-Datei, die ihren Zweck erfüllte. Soll heißen, sie sucht die Datei erst auf Basis ihrer Dateinamenserwiterung und ruft ein Programm auf, um die heruntergeladene Datei zu öffnen und zu verarbeiten. Danach löscht sie alles, was ich nicht brauche.
unbenannt2 - Klicke auf das Bild, um es zu vergrößern
Nun wollte ich aber nicht jedes Mal jedes Mal erst die Datei herunterladen und dann meine Batch starten, also dachte ich mir ich kompiliere sie in eine ausführbare Datei und benutze sie, um damit gleich die herunterzuladene Datei zu öffnen und nach ein bisschen herumprobieren habe ich es dann hinbekommen.
unbenannt - Klicke auf das Bild, um es zu vergrößern
Das Problem ist, dass der Lösch-Anteil des Codes nicht ausgeführt wird, wenn ich die Datei zum Öffnen verwende. Starte ich das Programm alleine klappt alles und ich bin jetzt ziemlich ratlos. Es wäre echt nett, wenn jemadn helfen könnte. Das ist übgrigens mein erster Beitrag, also habt bitte Nachsicht :D Ich bin mir auch nicht sicher, welches Thema hier richtig wäre lol
Mitglied: rubberman
30.10.2017 um 11:57 Uhr
Ich hab keine Ahnung was du da vorhast.

Zitat von Amateur01:
Nun wollte ich aber nicht jedes Mal jedes Mal erst die Datei herunterladen
Mal abgesehen davon, dass das in deinen Scripts auch nicht erfolgt, wo soll denn die Datei herkommen?

Zitat von Amateur01:
also dachte ich mir ich kompiliere sie in eine ausführbare Datei und benutze sie, um damit gleich die herunterzuladene Datei zu öffnen
Batchdateien lassen sich nicht kompilieren. Du kannst sie in eine Art selbstextrahierendes Archiv oder Installer mit Erweiterung .exe packen lassen. Die packen dann aber auch nur dein Originalscript irgendwo ins %temp% Verzeichnis und führen es aus. Ist also völlig nutzlos und ich weiß auch nicht was das mit deinem Problem zu tun haben soll.

Zitat von Amateur01:
Das Problem ist, dass der Lösch-Anteil des Codes nicht ausgeführt wird, wenn ich die Datei zum Öffnen verwende. Starte ich das Programm alleine klappt alles und ich bin jetzt ziemlich ratlos.
Ich verstehe kein Wort, sorry.

Steffen
Bitte warten ..
Mitglied: MasterBlaster88
01.11.2017 um 12:04 Uhr
Zitat von rubberman:
Ich verstehe kein Wort, sorry.

Steffen

Hab schon an mir gezweifelt. Bin froh, dass es nicht nur mir so geht
Bitte warten ..
Mitglied: Amateur01
01.11.2017 um 17:35 Uhr
Hi Steffen, tut mir leid, dass esso unverständlich war. Ich war nie besonders gut darin mich zu erklären :/ Was ich meinte, ist dass ich anstatt die Datei erst einmal zu speichern und dann das Programm auszuführen, es so wie auf dem Bild machen wollte.
unbenannt3 - Klicke auf das Bild, um es zu vergrößern

Batchdateien lassen sich nicht kompilieren. Du kannst sie in eine Art selbstextrahierendes Archiv oder Installer mit Erweiterung .exe packen lassen. Die packen dann aber auch nur dein Originalscript irgendwo ins %temp% Verzeichnis und führen es aus. Ist also völlig nutzlos und ich weiß auch nicht was das mit deinem Problem zu tun haben soll.

Ich sollte aufhören mit Begriffen ruumzuschmeißen, die ich nicht richtig verstehe. Auf jeden Fall habe ich die Datei einfach in einen Batch zu exe Converter getan und wenn ich die exe-Datei bentutze um das Heruntergeladene zu öffnen, funktioniert es soweit, dass das Programm aufgerufen wird, aber der Teil danach wird nicht umgesetzt. Es wird einfach nichts gelöscht.

Ich hoffe das war klarer und vielen Dank für deine Antwort.
Bitte warten ..
Mitglied: Amateur01
01.11.2017 um 17:36 Uhr
Ups das war der Falsche :D
Bitte warten ..
Mitglied: Amateur01
01.11.2017 um 17:39 Uhr
Hi Steffen, tut mir leid, dass es so unverständlich war. Ich war nie besonders gut darin mich zu erklären :/ Was ich meinte, ist dass ich, anstatt die Datei erst einmal zu speichern und dann das Programm auszuführen, es so wie auf dem Bild machen wollte.
unbenannt3 - Klicke auf das Bild, um es zu vergrößern

Batchdateien lassen sich nicht kompilieren. Du kannst sie in eine Art selbstextrahierendes Archiv oder Installer mit Erweiterung .exe packen lassen. Die packen dann aber auch nur dein Originalscript irgendwo ins %temp% Verzeichnis und führen es aus. Ist also völlig nutzlos und ich weiß auch nicht was das mit deinem Problem zu tun haben soll.


Ich sollte aufhören mit Begriffen rumzuschmeißen, die ich nicht richtig verstehe. Auf jeden Fall habe ich die Datei einfach in einen Batch zu exe Converter getan und wenn ich die exe-Datei bentutze um das Heruntergeladene zu öffnen, funktioniert es soweit, dass das Programm aufgerufen wird, aber der Teil danach wird nicht umgesetzt. Es wird einfach nichts gelöscht.

Ich hoffe das war klarer und vielen Dank für deine Antwort.
Bitte warten ..
Mitglied: rubberman
02.11.2017 um 18:30 Uhr
Zitat von Amateur01:
Was ich meinte, ist dass ich anstatt die Datei erst einmal zu speichern und dann das Programm auszuführen, es so wie auf dem Bild machen wollte.
Machst du doch mit dem START Befehl.

wenn ich die exe-Datei bentutze um das Heruntergeladene zu öffnen, funktioniert es soweit, dass das Programm aufgerufen wird, aber der Teil danach wird nicht umgesetzt.
Was aber nichts damit zu tun hat, dass du das Script mit diesem Bat2Exe Mist konvertiert hast. Das geht auch mit dem Script pur. Wie schon gesagt, am Ende wird sowieso nur dein Script wieder ausgepackt und ausgeführt.

Es wird einfach nichts gelöscht.
Das sieht auch alles ein bisschen suspekt aus. Vielleicht erklärst du einfach mal Schritt für Schritt was wie wo passieren soll. Aus irgendwelchen Gründen scheinen bei dir *.osz Dateien in das TEMP Verzeichnis zu wandern, die du dann öffnest. Soweit so gut. Dann willst du irgendwas aus "%localappdata%\osu!\Songs" auf merkwürdige Art und Weise löschen. Was genau soll denn da passieren?

Steffen
Bitte warten ..
Mitglied: Amateur01
03.11.2017 um 14:58 Uhr
Also erst sollen aus dem Ordner "C:\Users\Bini\AppData\Local\osu!\Songs" und dessen Unterordnern alle Dateien aufgelistet werden, die nicht die Dateinamenserweiterung .osu oder .mp3 haben. Diese Liste soll in der Texdatei "Zwischenspeicher.txt" gespeichert werden und das "/a-d" ist dafür da, dass die Unterordner selbst nicht auf die Liste kommen. Den Zwischenschritt habe ich eingebaut, weil ich nach vielen vergeblichen Versuchen gelesen habe, dass man in die For-Schleife nur einen Befehl schreiben kann. Ich brauche ja aber sowohl den "dir" als auch den "findstr" Befehl. Als Nächstes soll der Zwischenspeicher halt zeilenweise abgearbeitet und alles, was drin steht, gelöscht werden. Und das war es auch eigentlich. Die Pause ist übrigens da, damit der zu löschende Inhalt erst entstehen kann. Wenn diese Datei geöffnet wird,
unbenannt4 - Klicke auf das Bild, um es zu vergrößern
entsteht dieser Ordner
unbenannt5 - Klicke auf das Bild, um es zu vergrößern
und das dauert ein, zwei Sekunden.
Bitte warten ..
Mitglied: rubberman
03.11.2017, aktualisiert um 16:34 Uhr
Ungetestet
01.
for /r %%i in ("%localappdata%\osu!\Songs\*.*") do if /i "%%~xi" neq ".osu" if /i "%%~xi" neq ".mp3" del /f "%%~i"
Ohne Zwischenspeicher.
Und wenn das so im Script funktioniert aber nicht mehr im Bat2Exe Gedöns, dann sag ichs nochmal - lass es weg und arbeite mit dem Script.

Steffen
Bitte warten ..
Mitglied: Amateur01
03.11.2017 um 17:04 Uhr
Das hat nicht geklappt :/ Und das Problem liegt glaub ich auch nicht bei der Konvertierung. Die Exe-Datei funktioniert ja, wenn ich sie von alleine starte. Aber wenn ich sie auswähle, um damit die heruntergeladene Datei zu öffnen hakt es halt. Danke, dass du dir das überhaupt noch antust. Das gleiche gilt auch für das Skript: Wenn ich die Datei speichere, sie dann rechtsklicke, auf "Öffnen mit" gehe und die Batch-Datei(bei der ich den Dateipfad wieder angepasst habe) aussuche, passiert genau das Gleiche.
Bitte warten ..
Mitglied: rubberman
03.11.2017 um 18:37 Uhr
(bei der ich den Dateipfad wieder angepasst habe)
Das wäre wohl nicht nötig gewesen. Die Variable %localappdata% zeigt auf das richtige Verzeichnis im Benutzerprofil.

Aber wenn ich sie auswähle, um damit die heruntergeladene Datei zu öffnen
Jetzt komm ich langsam dahinter, was du überhaupt vorhast. Du wählst eine bestimmte Datei per Rechtstklick aus und willst sie über das Kontextmenü öffnen. Lässt sich machen. Aber erst noch mal zu der Löschaktion: Wann werden die zu löschenden Dateien erzeugt? Da du diese osu!.exe mit dem START Befehl ausführst, wird diese asynchron ausgeführt. Das bedeutet, das Script wartet nicht darauf bis osu!.exe öffnet, irgendwas macht oder beendet wird, sondern geht direkt zum Löschen. Falls die zu löschenden Dateien erst von osu!.exe erzeugt werden, existieren sie vermutlich nicht, wenn du sie löschen willst. Aber die Info kannst nur du geben...

Steffen
Bitte warten ..
Mitglied: Amateur01
03.11.2017 um 19:50 Uhr
Ich habe die osu!.exe absichtlich asynchron ausführen lassen, weil das Löschen sonst immer erst passiert ist, nachdem ich osu! wieder geschlossen habe und die Dateien werden erzeugt, wenn osu! geöffnet wird. Deshalb habe ich die 3 Sekunden Pause zwischen dem Öffnen und Löschen eingebaut. Die Dateien sind auf jeden Fall schon vorhanden.
Bitte warten ..
Mitglied: rubberman
LÖSUNG 03.11.2017, aktualisiert um 21:53 Uhr
OK, verstanden.

Speichere folgenden Code in irgendeine .bat Datei und führe ihn aus.
01.
@if (@a)==(@b) @end /*
02.
@echo off &setlocal
03.
2>nul md "C:\myTools"
04.
>"C:\myTools\SendToOsu!.bat" (
05.
  echo @echo off ^&setlocal
06.
  echo if exist "%%~1\" exit /b
07.
  echo if /i "%%~x1" neq ".osz" exit /b
08.
  echo start "" "%%localappdata%%\osu!\osu!.exe" %%1
09.
  echo ^>nul timeout /t 3 /nobreak
10.
  echo for /r "%%localappdata%%\osu!\Songs" %%%%i in ("*.*"^) do if /i "%%%%~xi" neq ".osu" if /i "%%%%~xi" neq ".mp3" del /f "%%%%~i"
11.
)
12.
cscript //nologo //e:jscript "%~fs0"
13.
goto :eof */
14.
var objWSHShell = new ActiveXObject('WScript.Shell'), objShortcut = objWSHShell.CreateShortcut(objWSHShell.SpecialFolders.Item('SendTo') + '\\osu!.lnk');
15.
objShortcut.TargetPath = 'C:\\myTools\\SendToOsu!.bat';
16.
objShortcut.WindowStyle = 7;
17.
objShortcut.Save();
Jetzt drücke die F5 Taste auf dem Desktop oder einem geöffneten Explorerfenster.
Wenn alles so funktioniert, wie ich mir das denke, dann hast du jetzt bei Rechtsklick auf eine .osz Datei im Menüpunkt "Senden an" ein "osu!"... Teste mal.

Steffen
Bitte warten ..
Mitglied: Amateur01
03.11.2017 um 21:22 Uhr
Es funktioniert perfekt, vielen Dank für die Mühe. Ich verstehe bloß leider überhaupt nicht, was da passiert. Könntest du mir das kurz erklären oder würde das den Rahmen sprengen?
Bitte warten ..
Mitglied: rubberman
LÖSUNG 03.11.2017, aktualisiert um 22:26 Uhr
Zitat von Amateur01:
würde das den Rahmen sprengen?
Nein. Ich freue mich eher über jemanden der nicht nur stumpf Code kopiert.

Der obige Batchcode erstellt ein Verzeichnis "C:\myTools" und schreibt dort eine "SendToOsu!.bat". Danach wird mit einem kurzen JScript eine Verknüpfung auf diese Batchdatei mit Name "osu!" im Verzeichnis
"C:\Users\Bini\AppData\Roaming\Microsoft\Windows\SendTo"
erstellt. Dort befinden sich alle Verknüpfungen, die im "Senden an" Menüpunkt zu finden sind.

Um zu verstehen was in "SendToOsu!.bat" passiert, hier erst mal ein ganz kurzer Beispielcode:
01.
@echo off
02.
echo %1
03.
pause
Wenn du eine andere Datei auf dieses Script ziehst, dann öffnet es sich und zeigt dir den vollen Dateiname an. Der Wert der Parametervariablen %1 ist das erste Argument, das an das Script übergeben wurde. In diesem Fall also der Dateipfad.

Genauso verhält es sich nun beim "Senden an" Menü. Der Dateipfad, den du dort an die Verknüpfung übergibst, landet letztlich als %1 im Script "C:\myTools\SendToOsu!.bat". Die hat folgenden Inhalt (kannst du dir natürlich auch live in deinem Verzeichnis ansehen):
01.
@echo off &setlocal
02.
if exist "%~1\" exit /b
03.
if /i "%~x1" neq ".osz" exit /b
04.
start "" "%localappdata%\osu!\osu!.exe" %1
05.
>nul timeout /t 3 /nobreak
06.
for /r "%localappdata%\osu!\Songs" %%i in ("*.*") do if /i "%%~xi" neq ".osu" if /i "%%~xi" neq ".mp3" del /f "%%~i"
Zeilenweise erklärt:
if exist "%~1\" exit /b
Wenn das übergebene Argument ein Verzeichnis ist (was der Backslash hinter dem Parameter aussagt), dann beende das Script sofort.

if /i "%~x1" neq ".osz" exit /b
Wenn die Dateiendung des übergebenen Arguments nicht ".osz" ist, dann beende das Script sofort.

start "" "%localappdata%\osu!\osu!.exe" %1
Starte "osu!.exe" asynchron und übergib den Dateipfad in %1 als Argument.

>nul timeout /t 3 /nobreak
Warte 3 Sekunden.

for /r "%localappdata%\osu!\Songs" %%i in ("*.*") do if /i "%%~xi" neq ".osu" if /i "%%~xi" neq ".mp3" del /f "%%~i"
Durchsuche "%localappdata%\osu!\Songs" rekursiv nach allen Dateien und weise sie nacheinander in den Schleifeniterationen %%i zu. Wenn die Dateiendung nicht ".osu" und nicht ".mp3" ist, lösche die Datei.

Führe ein CALL /? in einem CMD Fenster aus, um zu verstehen was die Modifikatoren mit vorangestelltem ~ Zeichen mit Parameter- und Schleifenvariablen tun.

Steffen
Bitte warten ..
Mitglied: Amateur01
04.11.2017 um 08:31 Uhr
Ok super. Vielen Dank nochmal, du hast mir echt weitergeholfen.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch-Datei in Exe-Datei umwandeln - .exe im Autostart

gelöst Frage von Luuke257Batch & Shell7 Kommentare

Hallo zusammen! Ich habe mir (mit reichlicher Hilfe) eine Batch-Datei geschrieben, die informationen über den PC ausliest und in ...

Windows Server

Zugriff auf exe Datei überwachen

gelöst Frage von sardldbWindows Server2 Kommentare

Hallo Zusammen Ich habe lange gegoogelt und mir auch ProcessMonitor heruntergeladen und ausprobiert. Leider komme ich nicht auf mein ...

Viren und Trojaner

Laden Makroviren eine .exe-Datei?

gelöst Frage von FrAmErViren und Trojaner2 Kommentare

Hallo zusammen, ich teste momentan eine Whitelisting-Software. Nun habe ich mir folgende Frage gestellt: Laden Makroviren eine .exe-Datei nach ...

Windows Server

WSUS Package Publisher exe Datei verteilen

gelöst Frage von JudgelgWindows Server21 Kommentare

Moin, ich wollte gern eine *.exe Datei über den WSUS verteilen. Leider wird die *.exe in der Konsole angezeigt ...

Neue Wissensbeiträge
LAN, WAN, Wireless
Sophos RED50 stürzt ab und ist danach tot
Information von Ex0r2k16 vor 2 TagenLAN, WAN, Wireless

Hey, nach meinem Thread bin ich durch Zufall auf das hier gestoßen: Also wenn ihr UTMs und RED50's im ...

Windows 10

Microsoft macht Bluetooth absichtlich kaputt: Windows 10 Update blockiert Bluetooth-Verbindungen zu Android

Tipp von 1Werner1 vor 2 TagenWindows 107 Kommentare

Moin, jetzt spinnt MS total , was muss ich da auf Chip.de lesen: Auch im Juni schließt Microsoft im ...

Soziale Netzwerke

Facebook - künftig ohne Account des Bundeslandes Sachsen-Anhalt

Information von VGem-e vor 3 TagenSoziale Netzwerke3 Kommentare

Servus, mal sehen, ob andere öffentliche Einrichtungen folgen wollen/können Gruß

Humor (lol)
Facebook Mailer auf NIX-Spamlist
Information von Henere vor 3 TagenHumor (lol)

Eben aus dem Log meines Postfix gefischt. Recht haben Sie. FB ist SPAM :-) lachende Grüße, Henere

Heiß diskutierte Inhalte
Router & Routing
Synology NAS in anderem Subnetz nicht erreichbar
Frage von Tech1KonniRouter & Routing24 Kommentare

Hallo Leute, ich bin Software-Entwickler und daher auch etwas bewandert in den Grundkenntnissen der Netzwerktechnik. Aktuell habe ich allerdings ...

Netzwerke
Zugriff auf mehrere Clients via RDP
Frage von xXMariusXxNetzwerke9 Kommentare

Moin, ich würde gerne auf mehrere Clients in einem Netzwerk via RDP zugreifen. Gibt es eine elegantere Lösung als ...

Windows Server
Probleme Installation Windows Server 2019
Frage von AK-47.2Windows Server7 Kommentare

Hallo zusammen, ich habe das Problem einen Windows Server 2019 auf ein Testsystem zu bringen. Das Mainboard ist ein ...

Windows Server
Server 2019 vpn über pptp einrichten funktioniert nicht
Frage von tobias3355Windows Server6 Kommentare

es gibt diverse anleitungen im netz um einen vpn server unter w2019 zu erstellen. leider funktioniert der verbindungsaufbau nicht. ...