Windows 7 更新文件或文件夹日期已修改
当文件和文件夹从一个位置复制到另一个位置时,我需要更新它们的“Date Modified”属性,以便“Date Modified”=当前系统时间。我有一台装有Windows 7的电脑,我没有管理权限,因此无法安装任何自定义实用程序。我当前的bat文件使用XCOPY:Windows 7 更新文件或文件夹日期已修改,windows-7,batch-file,cmd,Windows 7,Batch File,Cmd,当文件和文件夹从一个位置复制到另一个位置时,我需要更新它们的“Date Modified”属性,以便“Date Modified”=当前系统时间。我有一台装有Windows 7的电脑,我没有管理权限,因此无法安装任何自定义实用程序。我当前的bat文件使用XCOPY: xcopy "\\sharepoint\dept\gis\Abandoned_Wire\*.*" "\\corp.dom\fs4\g1\OUTPUT\GRIDPROD\PDF\Maps\Abandon Wire Maps" /c /
xcopy "\\sharepoint\dept\gis\Abandoned_Wire\*.*" "\\corp.dom\fs4\g1\OUTPUT\GRIDPROD\PDF\Maps\Abandon Wire Maps" /c /s /r /y /i
在我的WindowsXP框中,我使用了UnxUtils中的“touch”命令,但我找不到与Windows7本机相同的命令。谢谢大家! 您可以使用
powershell
,我相信它已经默认安装在Windows 7上了。将此行添加到批处理文件中,以运行powershell命令,更新所有名为遗弃的\u Wire**文件的时间戳:
powershell.exe -command "ls 'folder\Abandoned_Wire\*.*' | foreach-object { $_.LastWriteTime = Get-Date }"
这条线所做的只是:
-command
:告诉powershell运行以下命令并立即返回
ls
:列出指定路径上的所有匹配文件
foreach对象
:对找到的每个文件运行以下块
$\u.LastWriteTime=Get Date
:对于每个文件,将LastWriteTime
设置为Get Date
返回的值(今天的日期和时间)Robocopy应该可以为您执行此操作robocopy
是自Vista以来Windows中包含的本机工具
robocopy "\sharepoint\dept\gis\Abandoned_Wire" "\corp.dom\fs4\g1\OUTPUT\GRIDPROD\PDF\Maps\Abandon Wire Maps" /COPY:DA /S /IS
默认情况下,robocopy
将复制DAT
:数据、属性和时间戳,但这可以通过/copy
标志进行控制
有关所有选项,请参阅。在Windows上“触摸”文件有一种非常简单(尽管很神秘)的语法。(更新上次修改的时间戳)
如果文件位于当前目录中,则只需执行以下操作:
copy /b fileName+
如果文件位于其他路径中,则此操作有效:
copy /b somePath\fileName+,, somePath\
然而,似乎您仍然需要进行大量的编码,因为我相信您只想触摸复制的文件
以下是未经测试的,尽管我相信它会起作用。我不能担保这场演出。此解决方案需要2个未使用的驱动器号。我假设K:和L:是可用的
@echo off
:: map unused drive letters to your source and target paths
subst K: "\\sharepoint\dept\gis\Abandoned_Wire"
subst L: "\\corp.dom\fs4\g1\OUTPUT\GRIDPROD\PDF\Maps\Abandon Wire Maps"
:: replicate the folder hierarchy
xcopy K: L: /t
:: recursively copy and touch all files
for /r K: %%F in (*) do (
xcopy "%%F" "L:%%~pnxF" /r /y
copy /b "L:%%~pnxF"+,, "L:%%~pF"
)
:: release the temporary drive mappings
subst /d K:
subst /d L:
很高兴看到有人解释他们的答案。投票++。我将假设你的ps代码功能如广告所示,我对ps几乎一无所知。但它将“接触”所有文件,而不仅仅是刚刚复制的文件。这可能是个问题。@dbenham:不,它将触及所有名为“废弃的\u Wire**”的文件,这是OP最初指定的文件。我现在明白了,这个问题已经被你编辑成添加一个\,但我不相信这就是OP的意思。我让他/她自己决定。我看到了混乱的根源。原始问题的行格式为引号,而不是代码。这导致一些
“\\”
显示为“\”
,而“\”
显示为空。我将引用重新格式化为代码,我很确定它代表了OP的意图。路径和问题现在更有意义了。您的答案对于原始格式的问题更有意义,但编辑确实会使您的答案无效。即使使用原始的问题格式,您的答案仍然容易触及并非来源的预先存在的文件。这很有意义。我已将\添加到我的答案中。没错,目标文件夹中已有的文件也会被触动。这可以通过首先使用powershell执行复制来解决。这似乎应该可以工作,但它正在为我复制源的时间戳。@dbenham如果它不按它所说的那样工作,那将是相当令人失望的,但也不那么令人惊讶<代码>:(我只是自己尝试了一下,它只是忽略了/copy
标志并执行了DAT
复制。是时候退出调试了!如果有人对机器人复制的行为有任何了解,请点击此处编辑-将副本更改为XCOPY/R/Y以避免现有只读文件出现问题尽管这可能会回答这个问题,但我在代码示例中添加解释总是很好的。
for /R %i in (\*.\*) do copy %i /B+ ,,/Y