2011-04-22 121 views
0

我試圖教我的.bat文件重命名爲當前日期,每次點擊。文件不會重命名?

有人可以告訴我爲什麼它不起作用嗎?

@echo off 
set timeme=%s% 

RENAME %0 %timeme%.bat 
+0

我會說在該代碼中明顯缺乏任何AI是罪魁禍首:) – 2011-04-22 08:21:46

+0

重命名本身適用於我。 (我使用了一個任意字符串而不是'%s%'。) – 2011-04-22 09:35:13

回答

0

也許你可以將它複製到新名稱並刪除舊名稱作爲新文件中的第一條語句。

或者您可以創建一個等待原始文件解鎖並重命名的獨立腳本。將此腳本稱爲原始文件中的最後一個語句。

1

我認爲當你的腳本被執行時文件被鎖定 - 你不能重命名它。就像您在Word中打開文檔一樣。最好你可以做的是複製。

+0

nope nevermind我知道它%的隨機%選項。儘管我想隨機字母 – Meldrum 2011-04-22 08:54:32

1

正如我在我的評論中說的,重命名部分工作正常。但是,您應該記住,它也會產生一條錯誤消息,並且批處理腳本將在重命名後立即終止。所以RENAME命令應該是腳本中的最後一個。 (但是,如果名稱在重命名後沒有改變,腳本也不會終止,並且您可能會以某種方式利用該優勢,但這是一個不同的故事。)

因此,如果您遇到問題,您的批處理腳本如何重命名,我應該假設它與您示例中的%s%位有關。而且因爲你說過你正試圖將新名稱設置爲當前日期,那麼也許這部分就是導致問題的原因。因此,我決定與您分享我對這種特定自我更名的方法。

這裏有一個工作示例:

@ECHO OFF 
SET timeme=%DATE:/=-% 
SET timeme=%timeme: =-% 
RENAME %0 %timeme%.bat 

這裏我使用的是DATE環境變量的輸出。此變量的輸出根據本地設置進行格式化。在我的電腦上,它的格式爲ddd MM/dd/yyyy,因此%DATE%的計算結果類似Fri 04/22/2011

你可以看到我不是簡單地使用輸出,而是以某種方式處理它。實際上,我將-替換爲/(空格),因此我可以將結果用作文件名,而不需要用雙引號括起名稱。您可能需要檢查%DATE%輸出以查看是否需要替換其他字符。

但是,您可能還想使用不同的輸出。例如,您可以將年份,月份和日期從日期字符串中刪除,連接這些部分並將結果字符串用作新名稱。下面是它如何工作的一個示例(它安排在yyyyMMdd格式的部分):

SET timeme=%DATE:~-4%%DATE:~4,2%%DATE:~7,2% 

再次,這表達調諧到我的日期顯示格式,所以你可能需要改變的全部或部分數字來適應你的環境。

要獲得有關子字符串提取的更多信息(以及子字符串替換,就像我在前面的腳本示例中一樣),可以隨時從命令提示符處發出HELP SET

+0

+1不錯。不知道自我重命名實際上工作。 – 2011-04-22 17:30:25