我是否可以使用bat脚本从一个闪存驱动器将文件夹安装到具有特定名称并更改驱动器的另一个闪存驱动器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是否可以使用bat脚本从一个闪存驱动器将文件夹安装到具有特定名称并更改驱动器的另一个闪存驱动器相关的知识,希望对你有一定的参考价值。

我有一个bat文件,我想运行以将一些文件安装到另一个闪存驱动器上。

我要安装的闪存驱动器总是称为“主驱动器”。有时它在G:\有时D:......等

我知道我要安装的文件夹叫做“Temp”。我的路径看起来像这样......

主驱动\温度\

通常我会在这里使用路径... G:\ Temp \ BUT安装一些东西,因为我不知道这个闪存驱动器将在哪个驱动器中,我相信我必须使用闪存驱动器名称。

我在这里看到了类似的问题,但无法为这个特定问题找到解决方案。

这就是我到目前为止所拥有的......如果我将“主驱动器”更改为实际驱动器它可以工作,但是我不能总是知道它将在哪个驱动器上。

echo Installing Folders...
xcopy InstallApp\* "Main Drive"\Temp\ /s /i
pause
goto :EOF

有什么想法吗?

答案

以下将导致%_driveFound%指向它找到的具有%_volume%指定的卷名的最后一个驱动器。请注意,可以有多个具有相同卷名的驱动器!如果这对您来说是个问题,您可能需要检测它并让用户决定,或者可能寻找特定的序列号?注意使用robocopy /MIR而不是xcopy。

@setlocal ENABLEEXTENSIONS
@rem @set prompt=$G

@set _volume=Main Drive
@set _drives=Z: Y: X: W: V: U: T: S: R: Q: P: O: N: M: L: K: J: I: H: G: F: E: D: C: B: A:
@set _driveFound=

@for %%G in (%_drives%) do @call :FindVolumeName %%G "%_volume%"
@if defined _driveFound (@goto :_InstallIt)
@echo Volume named %_volume% not found.
@exit /b 0

:FindVolumeName
@set _driveLetter=%1
@set _driveLetter=%_driveLetter:~0,1%
@if not exist %1\ @exit /b 0
@vol %1 | @findstr /i /c:"Volume in drive %_driveLetter% is %~2" > NUL
@if %ERRORLEVEL% equ 0 @set _driveFound=%1
@exit /b 0

:_InstallIt
@set _dest=%_driveFound%\Temp\
@echo Installing to %_dest% ...
@rem Remove the @echo from the following line when you are sure source and dest paths are correct!
@echo @robocopy InstallApp\* %_dest% /MIR
@pause
@exit /b 0
另一答案

我希望沿着这些方向发挥作用(未经测试):

@Echo Off
Set "Dest="
For /F "Skip=1" %%A In ('WMIC Volume Where "Label='Main Drive'" Get DriveLetter 2^>Nul'
) Do For %%B In (%%A) Do Set "Dest=%%B\Temp"
If Not Defined Dest Exit /B
Echo Installing Folders...
If Not Exist "%Dest%\" MD "%Dest%"
XCopy "InstallApp\*" "%Dest%" /S /I 2>Nul
Pause

以上是关于我是否可以使用bat脚本从一个闪存驱动器将文件夹安装到具有特定名称并更改驱动器的另一个闪存驱动器的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行启动CouchDB

将闪存驱动器设置为变量

用 PC 模拟 U 盘

如何在 USB 闪存驱动器插入上运行 Python 脚本

BAT 脚本中的相对路径

便携版控制?