abbrechen
Goto Top

Rar.exe wird nicht gefunden

Mein Programm liegt zusammen mit der Rar.exe in einem Verzeichnis, doch wenn ich über das Startmenü das Porgramm aufrufe, findet dieses die Rar.exe nicht.
Wenn ich jedoch den Ordner öffne und dort dann das Programm starte, wird die Rar.exe erkannt und es funktioniert alles einwandfrei.
Hier ist mal der Code:

@echo off
title Safest
mode 70,10

:menu
cls
color 07
mode 70,10
echo Anleitung [A]
echo Liste der Dateien [L]
echo Eine Datei verschlüsseln [V]
echo Eine Datei entschlüsseln [E]

set /p abfrage=Was wollen Sie tun?: 
if "%abfrage%" == "V" goto V  
if "%abfrage%" == "v" goto V  
if "%abfrage%" == "[V]" goto V  
if "%abfrage%" == "[v]" goto V  

if "%abfrage%" == "E" goto E  
if "%abfrage%" == "e" goto E  
if "%abfrage%" == "[E]" goto E  
if "%abfrage%" == "[e]" goto E  

if "%abfrage%" == "A" goto A  
if "%abfrage%" == "a" goto A  
if "%abfrage%" == "[A]" goto A  
if "%abfrage%" == "[a]" goto A  

if "%abfrage%" == "L" goto L  
if "%abfrage%" == "l" goto L  
if "%abfrage%" == "[L]" goto L  
if "%abfrage%" == "[l]" goto L  

if errorlevel 0 goto error

:error
cls
color 0C
echo Der Befehl konnte nicht ausgeführt werden. Klicken Sie eine beliebige Taste, um zum Menue zu gelangen.
pause
goto menu

:A
cls
color 07
mode 100,10
echo.
echo Sichern Sie vor dem Verschlüsseln der Datei diese, denn Safest fertigt keine Kopie an.
echo Zum Verschlüsseln: Geben Sie zum Verschlüsseln den Namen, mit Endung (z.B. .jpg), an und anschließend den Pfad, bis zum Ordner (ohne Datei).
echo Zum Entschlüsseln: Geben Sie den Namen der Datei ohne seine Endung ein, da diese vom Verschlüsseler vorbestimmt ist. Anschließend muss noch der Name der Datei, mit seiner alten Endung (z.B. .jpg) und der Zielort angegeben werden.
echo.

set /p backtomenu=Wollen Sie zurück, zum Menü? [y / n] 
if "%backtomenu%" == "yes" goto menu  
if "%backtomenu%" == "Yes" goto menu  
if "%backtomenu%" == "y" goto menu  

if "%backtomenu%" == "no" goto A  
if "%backtomenu%" == "No" goto A  
if "%backtomenu%" == "n" goto A  

if errorlevel 0 goto A

:V
set /p originalname=Wie heißt die Datei? (+Endung): 
set /p dateipfad=Geben Sie den Ordnerort an: 
set /p dateiname=Wie soll die Datei heißen? (ohne Endung): 

ren %dateipfad%\%originalname% %dateiname%.dat
move /y %dateipfad%\%dateiname%.dat %userprofile%\AppData\Roaming\Microsoft\Windows\"Start menu"\programs\"abbrechen Entertainment"\Safest  
rar a safe.rar %dateiname%.dat
del /f %dateiname%.dat

goto packed

:packed
cls
color 0A
echo Die Datei ist nun verschlüsselt. Klicken Sie eine beliebige Taste, um zum Menue zu gelangen.
pause
goto menu

:E
set /p back=Welche Datei soll entschlüsselt werden? (ohne Endung): 
set /p backname=Wie soll die Datei heißen? (+Endung): 
set /p verzeichnis=Wohin soll die Datei entschlüsselt werden?: 

rar e safe.rar %back%.dat
rar d safe.rar %back%.dat
ren %back%.dat %backname%
move /y %backname% %verzeichnis%

goto unpacked

:unpacked
cls
color 0A
echo Die Datei ist nun entschlüsselt. Klicken Sie eine beliebige Taste, um zum Menue zu gelangen.
pause
goto menu

:L
cls
color 07
mode 70,30
rar v safe.rar
set /p liste=Wollen Sie die Liste speichern? [y / n] 
if "%liste%" == "yes" goto safe  
if "%liste%" == "Yes" goto safe  
if "%liste%" == "y" goto safe  

if "%liste%" == "no" goto nosafe  
if "%liste%" == "No" goto nosafe  
if "%liste%" == "n" goto nosafe  

if errorlevel 0 goto L

:safe
set /p listeort=Wo soll die Liste gespeichert werden?: 
rar v safe.rar > %listeort%\Datenliste.txt

:nosafe
set /p backtomenu=Wollen Sie zurück, zum Menü? [y / n] 
if "%backtomenu%" == "yes" goto menu  
if "%backtomenu%" == "Yes" goto menu  
if "%backtomenu%" == "y" goto menu  

if "%backtomenu%" == "no" goto L  
if "%backtomenu%" == "No" goto L  
if "%backtomenu%" == "n" goto L  

if errorlevel 0 goto nosafe
Kommentar vom Moderator Biber am Jun 12, 2012 um 16:50:35 Uhr
Verschoben von "Windows-weiss-nich-genau" nach "Batches from Hell"

Content-Key: 186349

Url: https://administrator.de/contentid/186349

Printed on: April 26, 2024 at 03:04 o'clock

Member: SlainteMhath
SlainteMhath Jun 12, 2012 at 13:04:01 (UTC)
Goto Top
Moin,

was für ein Arbeitsverzeichnis hast Du in dem Link im Startmenü angegeben?

lg,
Slainte
Member: abbrechen
abbrechen Jun 12, 2012 at 13:15:02 (UTC)
Goto Top
Gar keines, glaube ich.
Über das Startmenü starte ich die Datei direkt, doch scheint sie dann nicht zu wissen, dass sie sich in dem Verzeichnis (%userprofile%\AppData\Roaming\Microsoft\Windows\"Start menu"\programs\"abbrechen Entertainment"\Safest) befindet.
Ich habe es auch schon mit einer start.bat Datei probiert, die das Programm mit einer Verlinkung, zum Verzeichnis, starten soll, doch selbst dann wird die Rar.exe nicht gefunden.
Ich hoffe, dass ich deine Frage beantworten konnte. :S
Member: SlainteMhath
SlainteMhath Jun 12, 2012 at 13:19:47 (UTC)
Goto Top
Gar keines, glaube ich.
Aha ^^

Du kannst jetzt
1) Das Arbeitsverzeichniss angeben in dem dein "Programm" und die rar.exe liegt ("Ausführen in..")
2) die RAR.EXE in ein Verzeichniss kopieren das sich im PATH befindet (%windir%\system32 z.b.)
3) Im "Pogramm" denn vollständigen Pfad zur RAR.EXE angeben
4) Bei Programmstart mittels "cd" in das Verzeichnis wechseln in dem RAR.EXE liegt.

lg,
Slainte
Member: Penny.Cilin
Penny.Cilin Jun 12, 2012 at 13:26:11 (UTC)
Goto Top
Und die ganzern IF Abfragen kann man auch optimieren. Zumindest
 IF /I
kann man einsetzen, dann ist es egal, ob GROSS oder klein Schreibung.
ich bion jetzt nicht so der Bätschler, aber möglicherweise geht es sogar mit der FOR Schleife, dann wird es noch kürzer und evtl. auch übersichtlicher.
Member: bastla
bastla Jun 12, 2012 at 15:17:40 (UTC)
Goto Top
... und einen hab ich noch: face-wink

5) Den Pfad der aufgerufenen Batchdatei dazu verwenden, die "rar.exe" zu finden:
"%~dp0rar.exe"
Hinsichtlich der Abfragen: Etwas eleganter wäre vielleicht beispielsweise
if /i #%liste:~,1%==#y goto safe
Vor dem "set /p" würde sich auch noch ein Löschen des Variableninhalts mit "set liste=" anbieten.

BTW: So richtig selbsterklärend ist der Variablenname %liste% für eine Eingabe aber nicht wirklich ...

Grüße
bastla
Member: Biber
Biber Jun 12, 2012 updated at 16:44:19 (UTC)
Goto Top
Zitat von @bastla:
... und einen hab ich noch: face-wink
...ich auch...

BTW: So richtig selbsterklärend ist [...] aber nicht wirklich ...
BTWii: die Konstrukte der Art if errorlevel 0 goto A sehen ja wirklich richtig professionell aus..... aber...

den eigentlichen Entscheidungsspielraum hat der CMD-Interpreter nicht mehr, sollte er an dieser Zeile ankommen.face-wink

Oder mal anders gefragt:
Wenn das Errorlevel nach dem Set /p-Befehl nicht größer gleich 0 sein sollte - was könnte es dann sein?
Grün? Ein Eukalyptusbaum? Eine Insel?

Demo am CMD-Prompt
d:\temp>dadelaaat!
Der Befehl "dadelaaat!" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

d:\temp>if errorlevel 0 @echo %errorlevel%
9009

Und selbst wenn im Code gemeint gewesen sein sollte, "wenn der Benutzer nicht Ctrl-C gedrückt hat,, dann gehe zu.."
-> dann würde das Programmlogik ja dennnoch etwas eigenwillig verlaufen.
Vielleicht einfach mal an irgendeiner Stelle, an der etwas abgefragt wird, mal ^C oder ESC oder ENTER drücken und schauen, wo es weitergeht... *gg

Grüße
Biber
Member: abbrechen
abbrechen Jun 12, 2012 at 19:51:46 (UTC)
Goto Top
Ersteinmal vielen Dank, für die ganzen Verbesserungen. =)
Doch bevor ich die "Feinheiten" angehe, verstehe ich den wichtigsten Punkt nicht und zwar den von SlainteMhath.
Wo genau soll ich angeben, dass sich das Programm und die Rar.exe im Startmenü aufhalten?
Bei der install.bat erkennt die Batch das Arbeitsverzeichnis, wenn ich dort %userprofile% benutze, wenn ich zusätzlich C:\ angebe, dann wird es zwei Mal ausgegeben und der Befehl misslingt.
Und warum soll ich die Rar.exe dann überhaupt noch in dasselbe Verzeichnis legen, wenn du mir im 2. Punkt dazu rätst, die Rar.exe in den Programmordner zu legen?
Member: bastla
bastla Jun 12, 2012 at 19:58:32 (UTC)
Goto Top
Hallo abbrechen!
Und warum soll ich die Rar.exe dann überhaupt noch in dasselbe Verzeichnis legen, wenn du mir im 2. Punkt dazu rätst, die Rar.exe in den Programmordner zu legen?
Weil es sich bei den Vorschlägen (inkl "meiner" Nummer 5) um Alternativen handelt?

Grüße
bastla