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:
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
8 Kommentare
Neuester Kommentar
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
... und einen hab ich noch:
5) Den Pfad der aufgerufenen Batchdatei dazu verwenden, die "rar.exe" zu finden:
Hinsichtlich der Abfragen: Etwas eleganter wäre vielleicht beispielsweise
Vor dem "
BTW: So richtig selbsterklärend ist der Variablenname %liste% für eine Eingabe aber nicht wirklich ...
Grüße
bastla
5) Den Pfad der aufgerufenen Batchdatei dazu verwenden, die "rar.exe" zu finden:
"%~dp0rar.exe"
if /i #%liste:~,1%==#y goto safe
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
...ich auch...
den eigentlichen Entscheidungsspielraum hat der CMD-Interpreter nicht mehr, sollte er an dieser Zeile ankommen.
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
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
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.
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