用于在标签上选择驱动器的Windows批处理脚本

时间:2018-02-13 13:27:25

标签: windows batch-file

我正在尝试编写一个Windows批处理脚本,该脚本在系统启动时在许多Windows 10客户端PC上本地运行。该脚本需要根据标签(PHILLIPS)选择特定的驱动器,然后将一些文件复制到它。我尝试循环遍历所有可能的驱动器号C,D,E等,并将卷名称与字符串“PHILLIPS”进行比较,但由于某种原因它不起作用。我还尝试了不同的功能,例如:GetLabel用于获取卷的名称。

这是我的尝试:

@echo off & setlocal enableextensions
for %d in (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 (
    set target_=%d:
    ::
    call :vol %target_% label_
    if /i "%label_%" == "%PHILIPS%" (
        echo %%d%
        xcopy \\SATVIE017\Softlib\philips\dpm8000-dpm8200-dpm8500_fwf_2.02.dpm target_\
        endlocal & goto :EOF
    )
)

这是我第一次编写批处理脚本,所以我不知道该找出解决这个问题的方法。任何建议都会受到欢迎,因为我不想在100多个客户端上手动部署文件。

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

@echo off
for %%a in (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 %%a:
for /f "tokens=1-5*" %%1 in ('vol %%a:') do (
   if "%%6"=="Philips" set "vol=%%6"
 )
)
echo I found: %vol%

您将使用实际命令替换echo I found: %vol%

答案 1 :(得分:0)

为什么打开所有可能的驱动器号?

for /f "tokens=2 delims==:" %%a in ('wmic logicaldisk where volumename^="Philips" get name /value') do set "volume=%%a:"
echo your volume is %volume%

注意:我使用了几种可能的技巧之一来避免丑陋的wmic行结尾。

答案 2 :(得分:0)

......以及使用MountVol的类似想法:

@Echo Off
Set "_target="
For /F "Delims=\ " %%A In ('"MountVol|Find ":\""'
) Do Vol %%A 2>Nul|Find /I "PHILIPS" && (Set "_target=%%A\" & GoTo Done)
If Not Defined _target Exit /B
:Done
XCopy "<Source>" "%_target%" /<Options>