驱动器号更改时从USB驱动器运行批处理文件

时间:2013-09-30 21:12:37

标签: batch-file

所以,我制作了一个批处理脚本,它执行多个可移植程序(例如,prog1.exe,prog2.exe等)。问题是每当我将USB驱动器连接到另一台计算机时,驱动器号都会改变,在运行我的.bat文件时会出现错误。请帮我找一个解决方案。谢谢。

3 个答案:

答案 0 :(得分:15)

%~d0为您提供当前的驱动器号(包括冒号)。如果批处理文件包含在USB驱动器上,则可以使用该文件。

所以,例如,而不是

E:\PortablePrograms\ProgramName.exe
你会写

%~d0\PortablePrograms\ProgramName.exe

......或者你可以做这样的事情

::change directory to the script's directory's drive
pushd %~d0
::navigate from the drive to the relevant path(s)
cd PortablePrograms
::execute any programs
ProgramName.exe
SecondProgramName.exe
::just because I like to pair my pushes with pops; not required
popd

答案 1 :(得分:1)

这是我在列表中获取最后一个可移动驱动器的方式。

    @echo off

    :: Drivetypes
    ::  0=Unknown
    ::  1=No Root Directory
    ::  2=Removable(USB,Firewire)
    ::  3=Local Disk (Internal Hard Drive)
    ::  4=Network Drive(\\Server\share\)
    ::  5=Compact Disk (CD DVD)
    ::  6=Ram Disk
    for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "drivetype=2" 
    get name /format:value') do set driveletter= %%d
    echo %driveletter%
    pause

答案 2 :(得分:0)

您可以使用命令行参数%1%2作为输入路径,并相应地修改您的bat文件。