需要对我正在处理的批处理文件进行一些输入
Need some input on a batch file im working on
@echo off
:options
cls
echo Please select an operation:
echo.
echo 1. Mount TrueCrypt Volume
echo 2. Start TrueCrypt
echo 3. Dismount All TrueCrypt Volumes
echo 4. Exit
set /p option=" Option: "
:files
cls
echo Please choose a file:
echo.
echo 1. Tor
echo 2. Other_files
echo 3. Main Menu
set /p file=" File: "
if %option%==1 (
goto files
)
if %option%==2 (
TrueCrypt\TrueCrypt.exe
echo Operation Complete.
pause
goto options
)
if %option%==3 (
TrueCrypt\TrueCrypt.exe /q /d
echo Operation Complete.
pause
goto options
)
if %option%==4 (
exit
)
else(
echo Invalid Input.
echo Please try again . . .
pause > nul
goto options
)
if %file%==1 (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Tor"
echo Operation Complete.
pause
goto files
)
if %file%==2 (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Other_files"
echo Operation Complete.
pause
goto files
)
if %file%==3(
goto options
)
else(
echo Invalid Input.
echo Please try again . . .
pause > nul
goto files
)
这是我输入的批处理文件,用于调用使用 TrueCrypt 制作的隐藏加密卷。
现在选项 "screen" 工作正常,每个选项都按照预期的方式工作。但是文件 "screen" 没有做任何它应该做的事情,你 select 一个你想打开的文件,它什么都不做,只是放在那里,它没有给出错误或任何东西,所以这就是难倒我了。
在 Batch 方面我相对比较菜鸟,但我确实有其他编程知识。
但我希望有人能够提供帮助!
你这里有一个无限循环:
:files
cls
echo Please choose a file:
echo.
echo 1. Tor
echo 2. Other_files
echo 3. Main Menu
set /p file=" File: "
if %option%==1 (
goto files
)
因此,如果用户输入选项 1,则 IF
条件会将他们发送到上面的 files
菜单。用户输入,例如文件2,但是%option%
仍然是1。IF
语句语句然后将它们发送回files
...
要解决此问题,您应该设置另一个标签(例如,filesExecute
)并让 IF
语句将控件发送到那里:
if %option%==1 (
goto filesExecute
)
现在在适当的位置定义您的 filesExecute
标签:
...
REM Add new label here.
:filesExecute
if %file%==1 (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Tor"
echo Operation Complete.
pause
goto files
)
if %file%==2 (
...
您在间距方面遇到了一些问题,尤其是 if %file%==3(
行。 3
和 (
之间需要有一个 space。没有那个 space,你会得到 The syntax of the command is incorrect.
批处理语言不适合代码打高尔夫球,间距或不间距很重要。
有一个明显的逻辑问题,你要访问 :files
是否输入了相关的 %option%
。
还有一些通用的批处理脚本约定,如果您现在掌握它们,它们可能会在长期 运行 中为您提供帮助。每当将变量设置为字符串时,请考虑将 set "var=value"
对放在引号中。此外,在 if
语句中引用比较运算符的每一侧。此类更改不会影响此脚本,但习惯会导致以后的故障排除较少。
无论如何,这是你的脚本,已修复:
@echo off
:options
cls
set option=
echo Please select an operation:
echo.
echo 1. Mount TrueCrypt Volume
echo 2. Start TrueCrypt
echo 3. Dismount All TrueCrypt Volumes
echo 4. Exit
set /p "option=Option: "
if "%option%"=="1" (
goto files
) else if "%option%"=="2" (
TrueCrypt\TrueCrypt.exe
echo Operation Complete.
pause
goto options
) else if "%option%"=="3" (
TrueCrypt\TrueCrypt.exe /q /d
echo Operation Complete.
pause
goto options
) else if "%option%"=="4" (
exit /b
) else (
echo Invalid Input.
echo Please try again . . .
pause > nul
goto options
)
:files
cls
set file=
echo Please choose a file:
echo.
echo 1. Tor
echo 2. Other_files
echo 3. Main Menu
set /p "file=File: "
if "%file%"=="1" (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Tor"
echo Operation Complete.
pause
goto files
) else if "%file%"=="2" (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Other_files"
echo Operation Complete.
pause
goto files
) else if "%file%"=="3" (
goto options
) else (
echo Invalid Input.
echo Please try again . . .
pause > nul
goto files
)
@echo off
:options
cls
echo Please select an operation:
echo.
echo 1. Mount TrueCrypt Volume
echo 2. Start TrueCrypt
echo 3. Dismount All TrueCrypt Volumes
echo 4. Exit
set /p option=" Option: "
:files
cls
echo Please choose a file:
echo.
echo 1. Tor
echo 2. Other_files
echo 3. Main Menu
set /p file=" File: "
if %option%==1 (
goto files
)
if %option%==2 (
TrueCrypt\TrueCrypt.exe
echo Operation Complete.
pause
goto options
)
if %option%==3 (
TrueCrypt\TrueCrypt.exe /q /d
echo Operation Complete.
pause
goto options
)
if %option%==4 (
exit
)
else(
echo Invalid Input.
echo Please try again . . .
pause > nul
goto options
)
if %file%==1 (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Tor"
echo Operation Complete.
pause
goto files
)
if %file%==2 (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Other_files"
echo Operation Complete.
pause
goto files
)
if %file%==3(
goto options
)
else(
echo Invalid Input.
echo Please try again . . .
pause > nul
goto files
)
这是我输入的批处理文件,用于调用使用 TrueCrypt 制作的隐藏加密卷。 现在选项 "screen" 工作正常,每个选项都按照预期的方式工作。但是文件 "screen" 没有做任何它应该做的事情,你 select 一个你想打开的文件,它什么都不做,只是放在那里,它没有给出错误或任何东西,所以这就是难倒我了。
在 Batch 方面我相对比较菜鸟,但我确实有其他编程知识。 但我希望有人能够提供帮助!
你这里有一个无限循环:
:files
cls
echo Please choose a file:
echo.
echo 1. Tor
echo 2. Other_files
echo 3. Main Menu
set /p file=" File: "
if %option%==1 (
goto files
)
因此,如果用户输入选项 1,则 IF
条件会将他们发送到上面的 files
菜单。用户输入,例如文件2,但是%option%
仍然是1。IF
语句语句然后将它们发送回files
...
要解决此问题,您应该设置另一个标签(例如,filesExecute
)并让 IF
语句将控件发送到那里:
if %option%==1 (
goto filesExecute
)
现在在适当的位置定义您的 filesExecute
标签:
...
REM Add new label here.
:filesExecute
if %file%==1 (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Tor"
echo Operation Complete.
pause
goto files
)
if %file%==2 (
...
您在间距方面遇到了一些问题,尤其是 if %file%==3(
行。 3
和 (
之间需要有一个 space。没有那个 space,你会得到 The syntax of the command is incorrect.
批处理语言不适合代码打高尔夫球,间距或不间距很重要。
有一个明显的逻辑问题,你要访问 :files
是否输入了相关的 %option%
。
还有一些通用的批处理脚本约定,如果您现在掌握它们,它们可能会在长期 运行 中为您提供帮助。每当将变量设置为字符串时,请考虑将 set "var=value"
对放在引号中。此外,在 if
语句中引用比较运算符的每一侧。此类更改不会影响此脚本,但习惯会导致以后的故障排除较少。
无论如何,这是你的脚本,已修复:
@echo off
:options
cls
set option=
echo Please select an operation:
echo.
echo 1. Mount TrueCrypt Volume
echo 2. Start TrueCrypt
echo 3. Dismount All TrueCrypt Volumes
echo 4. Exit
set /p "option=Option: "
if "%option%"=="1" (
goto files
) else if "%option%"=="2" (
TrueCrypt\TrueCrypt.exe
echo Operation Complete.
pause
goto options
) else if "%option%"=="3" (
TrueCrypt\TrueCrypt.exe /q /d
echo Operation Complete.
pause
goto options
) else if "%option%"=="4" (
exit /b
) else (
echo Invalid Input.
echo Please try again . . .
pause > nul
goto options
)
:files
cls
set file=
echo Please choose a file:
echo.
echo 1. Tor
echo 2. Other_files
echo 3. Main Menu
set /p "file=File: "
if "%file%"=="1" (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Tor"
echo Operation Complete.
pause
goto files
) else if "%file%"=="2" (
TrueCrypt\TrueCrypt.exe /q background /e /m rm /v "Other_files"
echo Operation Complete.
pause
goto files
) else if "%file%"=="3" (
goto options
) else (
echo Invalid Input.
echo Please try again . . .
pause > nul
goto files
)