我正在使用Sandisk USB记忆棒,它有一个内置软件,称为安全访问软件,可以访问保险库。
我想从命令行调用此安全访问软件应用程序。
以下是我的批处理文件。它确实识别驱动器,我能够在驱动器上看到该文件。但每次我收到此错误:
文件名,目录名或卷标语法不正确
批次代码:
@echo off
setLocal EnableDelayedExpansion
set "myDrive="
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
if not defined myDrive vol %%a: >nul 2>nul && (
if exist "%%a:\RunSanDiskSecureAccess_Win.exe" set "myDrive=%%a:"
)
)
这会检测到驱动器,但下面的代码无法调用该应用程序。
if defined myDrive (
echo drive found [%myDrive%]
) else (
echo USB drive has not been found
rem cd [%myDrive%]:\RunSanDiskSecureAccess_Win.exe
"[%myDrive%]:\RunSanDiskSecureAccess_Win.exe"
)
endlocal
答案 0 :(得分:0)
此任务的可能批处理代码是:
@echo off
for %%# in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
vol %%#: >nul 2>nul
if not errorlevel 1 (
if exist "%%#:\RunSanDiskSecureAccess_Win.exe" (
start "Secure Access" "%%#:\RunSanDiskSecureAccess_Win.exe"
exit /B
)
)
)
echo USB drive has not been found.
echo.
pause
对于每个驱动器盘符命令,执行 vol ,其中存在卷的值为0,或者存在的卷的值大于0。现有卷上的标准输出或未存在卷上的错误消息将重定向到设备 nul ,请参阅using command redirection operators。
如果 vol 的退出代码不大于或等于 1,则表示退出代码等于0,因为 vol ,执行存在检查以启动可执行文件。
如果应用程序的可执行文件存在于当前驱动器上,则应用程序将在新进程中启动,并且此批处理文件的处理将立即退出,因为无需检查是否存在任何其他驱动器。第一个双引号字符串被命令 start 解释为新进程的标题,这是Secure Access
的原因。
但如果在任何驱动器上找不到可执行文件,则会在控制台窗口中显示一条错误消息,并停止批处理,以便用户可以读取该消息,直到用户按任意键或关闭控制台窗口。 / p>
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
echo /?
exit /?
for /?
if /?
pause /?
start /?
vol /?