我正在尝试编写一个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多个客户端上手动部署文件。
答案 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>