如何在不更改修改日期的情况下重命名文件

YYY*_*YYY 3 r file-rename

我写了一个脚本来重命名文件。但是我发现修改日期更改为相同的日期。因此,如果按日期对原始订单进行排序,则该原始订单将被破坏。有什么方法可以更改名称而不更改修改日期吗?或者,尽管日期已更改,但按日期排序的顺序仍然相同。以下是我当前的代码:

# 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)
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

我最终学习了shell()命令,并使用如下代码解决了该问题。就像在Windows OS中一样,我在文件名中使用-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)
Run Code Online (Sandbox Code Playgroud)

intern参数使OS反馈进入R对象rept,可以搜索该对象以找到成功复制“ 1个文件已复制”字符串或任何其他想要捕获的错误。

我在运行Windows 7 Professional SP1的平台上处于R版本2.15.3(2013-03-01):x86_64-w64-mingw32 / x64(64位)。


Fra*_*ein 5

当然有可能!

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

例子:

MOVE "C:\Folder\Filename.txt" "C:\Folder\New_Filename.txt"

(我不知道它是否适用于所有版本的 Windows,但它似乎至少适用于 Windows 7)


如果它仍然不起作用,您可以使用Nirsoft 的Nircmd 之类的程序将文件的日期更改为重命名之前的日期(或您可能想要的任何其他日期/时间)。

句法:

nircmd.exe setfiletime "创建时间" "修改时间"

例子:

nircmd.exe setfiletime "c:\temp\myfile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"


inf*_*ner 1

您无法在不更改修改日期的情况下更改名称。想一想!您正在修改文件(即使您没有修改内容)。

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

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