2009-06-18 57 views
0

所以我正在運行一個程序,它輸出一個html文件到一個靜態位置/名稱,我想保留所有這些,一個日誌非常多。用命令行更改文件名和位置

我將如何去改變該文件的名稱,以不同的,獨特的,並可能通過命令行將其位置更改爲日誌文件夾。我正在考慮在文件名中添加一個時間戳,但我不知道該怎麼做,這就是我來這裏的原因。

編輯:我在Windows Server 2003上這樣做。所以它將在cmd.exe外殼。我通過CC.NET運行,所以我可以很容易地運行一個批處理文件,其中包含命令。 CC.NET項目每次在同一位置創建一個具有相同名稱的HTML文件,因此它會覆蓋舊文件。

所以我想移動舊的並重命名它,所以我不會遇到同樣的覆蓋問題,將它們移動到不同的位置。

簡而言之:在Windows命令行程序中,我如何獲取文件,將其移動並將其唯一地重命名(timestamp?)?

+1

你需要,如果你想有一個很好的答案提供更多的細節。例如,你在使用什麼操作系統?你如何運行這個程序?它是你製作的程序,還是第三方程序? – StriplingWarrior 2009-06-18 14:46:21

回答

2

要做到這一點是使用%RANDOM%最簡單的方法 - 例如:

ren foo.txt foo-%RANDOM%.txt 

你可以去瘋了,有兩個隨機量減少碰撞的機會(或只寫一個簡單的錯誤處理迴路) - 樣:

ren foo.txt foo-%RANDOM%-%RANDOM%.txt 

另一種方法是,如果您確實需要時間,則可以解析出%TIME%環境變量。我不知道這是如何工作在不同的語言環境中,當系統時間改變了你是在危險中有重複的值......但這裏的過程中去了解它:

> echo %TIME% 

在首先看

它是這樣的:

11:16:19.74

讓我們拉出11:16爲 「1116」

> echo %time:~,2%%time:~3,2% 

我們要去的地方是通過指示變量中的開始點和停止點來拉出子串。你可以把所有的出路到百分之一秒 - 即你本來可以:

+0

只是把戲!剛剛使用了MOVE而不是ren,並且在%date%中添加了相同的邏輯,並且我得到了我想要的:)。 – Jared 2009-06-18 15:56:03

2

在bash中,你可以做類似的東西:

#!/bin/bash 

FILE=$(date +%Y-%B-%d_%H:%M:%S) # FILE will contain `2009-June-18_20:17:13' 
mv OLD_FILE, FILE 

或者,就用自1970年以來經過的秒:date +%s