如何重命名文件而不更改修改日期

问题描述 投票:0回答:3

我编写了一个脚本来重命名文件。但我发现修改日期已更改为相同。因此,如果按日期排序,原始顺序就会被破坏。有没有什么方法可以更改名称而不更改修改日期?或者虽然日期改变了,但如果按照日期排序的话,顺序还是一样的。以下是我当前的代码:

# save previous working folder
wkdir <- getwd()

# set the target folder
setwd("C:/Users/YY/Desktop/Tmp file/")

# set the file pattern
a <- list.files(path = ".", pattern = "abc_*.*$") 

# set the name to be replaced
b<-gsub("abc_","ABC_",a)

# rename
file.rename(a,b)

# restore previous working folder
setwd(wkdir)

如果有人能帮助我,我将不胜感激。

r file-rename
3个回答
6
投票

我有同样的问题 - 我需要处理文件,然后存档。我首先在 R 中尝试,然后意识到副本更改了文件的原始日期时间戳。

我最终学习了 shell() 命令并用如下代码解决了它。由于我在 Windows 操作系统中,我在文件名中使用 -R 和 -d 来表示是 R 形式(路径中的 / 形式)还是 Windows(路径中的 \ 形式),并使用 normalizePath() 进行转换。

sourcefileR <- "c:/Users/myname/Documents/test.dat"
destfileR <- "c:/Users/myname/Documents/somewhereelse/test.dat"
sourcefiled <- normalizePath(sourcefileR)
# now looks like: "c:\\Users\\myname\\Documents\\test.dat"
destfiled <- normalizePath(destfileR)

rept <- shell(paste("copy ", sourcefiled, destfiled, sep=" "), intern=TRUE)

intern 参数导致操作系统反馈进入 R 对象报告,可以搜索该报告以查找“1 个文件已复制”字符串以成功或捕获您想要的任何其他错误。

我使用的是R版本2.15.3(2013-03-01),平台:x86_64-w64-mingw32/x64(64位) 运行 Windows 7 Professional SP1。


6
投票

当然可以。

您还可以使用“MOVE”命令来重命名文件/文件夹,而不是使用“REN”或“RENAME”等命令,并且它们的日期将保持完全相同。

示例:

移动“C:\Folder\Filename.txt”“C:\Folder\New_Filename.txt”

(我不太确定它在每个版本的 Windows 上是否都以相同的方式工作,如果您在较新或较旧版本的 Windows 上得到不同的结果,请通过评论告诉我。)


现在,如果由于某种原因像 MOVE 这样的命令不适合您,还有一个来自 Nirsoft 的名为 Nircmd 的程序,它可以做很多事情,包括将文件的日期编辑为您想要的任何内容。 (免费软件)

语法:

nircmd.exe setfiletime “创建时间”“修改时间”

示例:

nircmd.exe setfiletime "C:\Folder\File.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"


1
投票

如果不更改修改日期,则无法更改名称。想一想!您正在修改文件(即使您没有修改内容)。

问。您是在 R 中排序还是在 Windows 文件夹视图之外排序? 问:您是否考虑过按创建日期排序?

如果您在窗口中排序,您应该能够弄清楚如何按“创建日期”排序 如果您在 R 中对其进行排序,请使用 file.info 获取相关属性,然后对其进行排序。

© www.soinside.com 2019 - 2024. All rights reserved.