bat 文件使用今天的日期时间更改文件夹中文件的日期时间,从文本列表中读取文件名

bat 文件使用今天的日期时间更改文件夹中文件的日期时间,从文本列表中读取文件名

我有一个包含大量文件的文件夹,这些文件将使用日期时间定期删除(旧文件将被自动删除)。

我需要保留此文件夹中的某些文件并防止它们被自动删除并更新文件的日期时间。

要不断更新日期时间的文件名保存在仅包含要不断更新文件日期时间的文件名的文本文件中。

我的操作系统是 Windows 7 32 位语言意大利语

我添加一个例子:

包含所有文件的文件夹:

log1.txt modified date lunedì ‎1 ‎gennaio ‎2019, ‏‎00:00:00
log2.txt modified date lunedì ‎1 ‎gennaio ‎2019, ‏‎00:03:00
log3.txt modified date lunedì ‎1 ‎gennaio ‎2019, ‏‎00:06:00
log6.txt modified date lunedì ‎1 ‎gennaio ‎2019, ‏‎00:08:00
log7.txt modified date lunedì ‎1 ‎gennaio ‎2019, ‏‎00:30:00
log9.txt modified date lunedì ‎1 ‎gennaio ‎2019, ‏‎00:40:00
log152.txt modified date lunedì ‎1 ‎gennaio ‎2019, ‏‎01:10:00

list.txt 的内容,其中包含要更新的文件名和修改日期时间:

log7.txt
log152.txt
log555.txt
log785.txt
log10150.txt

在这种情况下,运行 bat 文件后,这些文件需要日期时间在今天/现在的日期时间进行更新

log7.txt modified date venerdì ‎4 ‎ottobre ‎2019, ‏‎16:00:00 (today)
log152.txt modified date venerdì ‎4 ‎ottobre ‎2019, ‏‎16:00:00 (today)

当未包含在要更新的文件列表中时,所有其他文件都不应更改。

包含要更新的文件的文件夹路径中有空格。

要更新的文件列表保存在不同的文件夹中。

这是我尝试的代码,它将文件复制到同一文件夹中以更新日期时间,但我只需要更新文本列表中保存的文件名。

cd C:\Users\Windows\Desktop\test
copy C:\Users\Windows\Desktop\test,,+

答案1

这可以通过使用尼尔软件 免费软件工具nircmd

假设该文件list.txt包含文件名列表,以下批处理文件将把它们全部设置为当前日期时间:

@echo off
setlocal enabledelayedexpansion
for /f %%G in ('type "C:\path\to\list.txt"') do (
  "C:\path\to\nircmd.exe" setfiletime "%%G" now now
)

或者使用您的代码,注意copy解决方案仅限于在当前文件夹中工作:

@echo off
setlocal enabledelayedexpansion
for /f %%G in ('type "C:\path\to\list.txt"') do (
  copy "%%G",,+
)

相关内容