2015-11-25 47 views
0

我在這裏已經找到了這個基本代碼,並且正在使用它來移動,然後重新命名我知道文件名的文件。但是,現在我想移動一個文件,其中的文件名是一個參數。當文件名是一個變量時批處理文件來重命名文件

當我運行此代碼時,它將使用當前日期和時間重命名文件夾。我如何獲得它來重命名文件夾中的變量文件名?我添加了暫停來嘗試排查發生的事情。

Echo Off 
SET SiteName=%~1 
SET FileDate=%~2 
SET File=%SiteName%%FileDate% 


IF Not EXIST C:\Users\Administrator\Documents\~Withdrawal_Report\%File% GOTO DoNothing 

copy C:\Users\Administrator\Documents\~Withdrawal_Report\%File% C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File% 


ren C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File% %SiteName%-%date:~4,2%-%date:~7,2%-%date:~10,4%[email protected]_%time:~0,2%h%time:~3,2%m%time:~6,2%s%.csv 
ren C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File% %SiteName%-%date:~4,2%-%date:~7,2%-%date:~10,4%[email protected]_%time:~1,1%h%time:~3,2%m%time:~6,2%s%.csv 


del C:\Users\Administrator\Documents\~Withdrawal_Report\%File% 
pause 

:DoNothing 
Exit 
+0

您正在嘗試重命名相同的文件兩次,這當然不能工作(在第一次重命名時,源路徑不再存在);所以你真的想做什麼? – aschipfl

回答

0

嘗試使用雙引號,像這樣:

Echo Off 
SET "SiteName=%~1" 
SET "FileDate=%~2" 
SET "File=%SiteName%%FileDate%" 


IF Not EXIST "C:\Users\Administrator\Documents\~Withdrawal_Report\%File%" GOTO DoNothing 

copy "C:\Users\Administrator\Documents\~Withdrawal_Report\%File%" "C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File%" 

ren "C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File%" "%SiteName%-%date:~4,2%-%date:~7,2%-%date:~10,4%[email protected]_%time:~0,2%h%time:~3,2%m%time:~6,2%s%.csv" 
ren "C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File%" "%SiteName%-%date:~4,2%-%date:~7,2%-%date:~10,4%[email protected]_%time:~1,1%h%time:~3,2%m%time:~6,2%s%.csv" 


del "C:\Users\Administrator\Documents\~Withdrawal_Report\%File%" 
pause 

:DoNothing 
Exit 

而且,你要重命名兩次相同的文件,據我可以告訴。之前做過這個工作嗎?

+0

你也應該在集合表達式中使用'''''set'SiteName =%〜1「',否則參數中的幾個特殊字符可能會導致麻煩... – aschipfl

+0

你是對的,編輯 –

+0

謝謝丹尼斯和aschipfl!圍繞整個文件路徑添加引號。整個文件重命名兩次是單個數字/兩位數(小時)時間戳。其中一個重命名將失敗,它是一個單位數小時,反之亦然是兩位數小時。這是基本代碼,它在那裏解釋。 http://stackoverflow.com/questions/4984391/cmd-line-rename-file-with-date-and-time –