2012-05-10 93 views
3

我在我的簡單批處理文件中出現一些錯誤。該文件旨在將文件「xyz.4do」複製到同一目錄,然後將複製的文件重命名爲「abc.4do」,最後將複製/重命名的文件移動到不同的文件夾。批量命令複製,重命名然後移動全部失敗

我的代碼是下面,我已經作了評論中發生的錯誤:

@ECHO off 
CLS 
SETLOCAL 

SET file=C:/users/xyz/desktop/xyz.4do 
SET newName=abc.4do 
SET endDir=C:/users/abc/desktop 

REM Error occurs on below line: "The system cannot find the file specified" but the file exists 
COPY %file% 
REM Error below: "The syntax of the command is incorrect" 
REN %file% %newName% 
REM Error occurs on below line: "The system cannot find the file specified" 
MOVE %newName% %endDir% 

ECHO. 
PAUSE 
ENDLOCAL 

回答

5

Windows使用反斜槓\作爲文件夾分隔符,而不是正斜槓/。許多命令使用正斜槓來處理,但它不可靠。

只需在頂部更改路徑以使用反斜槓,並且一切都應該可以工作。

有趣的是,你今天問你的問題,因爲它直接關係到這是今天發佈的這個其他問題:Why does the cmd.exe shell on Windows fail with paths using a forward-slash ('/'') path separator?

+0

更改爲反斜槓但不起作用。它仍然說找不到第一個複製命令的文件。另外應該注意的是批處理文件在不同的目錄中執行,以至於xyz.4do是 –

0

的COPY命令不是一個參數的命令,您需要同時獲得源和目的地。

你應該能夠做到與只用一個命令,順便說一句:

COPY %file% %endDir%\%newName% 

對於未來的批次參考,試試這個網站:http://ss64.com/nt/copy.html

+1

絕對錯誤的聲明。目標參數是可選的 - 它默認爲當前文件夾。 MicroSoft文檔清楚地顯示目標是可選的,並且圍繞參數使用方括號。 – dbenham

+0

@dbenham加!猜猜我和Batch一起工作已經太久了。 – Riking