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 12.06.2012 um 18:50:35 Uhr
Verschoben von "Windows-weiss-nich-genau" nach "Batches from Hell"

Content-ID: 186349

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

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

SlainteMhath
SlainteMhath 12.06.2012 um 15:04:01 Uhr
Goto Top
Moin,

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

lg,
Slainte
abbrechen
abbrechen 12.06.2012 um 15:15:02 Uhr
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
SlainteMhath
SlainteMhath 12.06.2012 um 15:19:47 Uhr
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
Penny.Cilin
Penny.Cilin 12.06.2012 um 15:26:11 Uhr
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.
bastla
bastla 12.06.2012 um 17:17:40 Uhr
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
Biber
Biber 12.06.2012 aktualisiert um 18:44:19 Uhr
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
abbrechen
abbrechen 12.06.2012 um 21:51:46 Uhr
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?
bastla
bastla 12.06.2012 um 21:58:32 Uhr
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