使用命令行更改文件名和位置

时间:2009-06-18 14:39:12

标签: logging command-line

所以我正在运行一个程序,它将一个html文件输出到静态位置/名称,我想保留所有这些,一个日志。

我如何将该文件的名称更改为不同的,唯一的,并可能通过命令行将其位置更改为日志文件夹。我正在考虑在文件名中添加一个时间戳,但我不知道如何去做,这就是为什么我在这里。

编辑:我在Windows Server 2003上这样做。所以它将在cmd.exe shell中。我正在通过CC.NET运行这个,所以我可以轻松地运行带有命令的批处理文件。 CC.NET项目每次在同一位置构建一个具有相同名称的HTML文件,因此它会覆盖旧文件。

所以我想移动旧的并重命名它,这样我就不会遇到同样的覆盖问题,将它们移动到不同的位置。

简短而简单:如何在Windows命令shell中获取文件,移动文件,将其重命名(时间戳?)?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

最简单的方法是使用%RANDOM% - 例如:

ren foo.txt foo-%RANDOM%.txt

你可能会发疯并且有两个random来减少碰撞的几率(或者只是写一个简单的错误处理循环) - 比如:

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

另一种方法是,如果您真的需要时间,则可以解析%TIME%环境变量。我不知道它在不同的语言环境中是如何工作的,当系统时间发生变化时,你就有了重复值的风险......但是这是理解它的过程:

首先看看:

> echo %TIME%

它类似于:

11:16:19.74

让我们把11:16拉到“1116”

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

我们要去的是通过指示变量中的起点和终点来拉出子串。你可以把它一直带到百分之一秒 - 也就是你可能得到的:

11161974