我正在尝试自动重命名一些文件,但是还需要文件更新它的“上次修改”时间,因为我在Word文档中插入了一个字段,该字段可以动态更新上次编辑文件的时间。
copy C:\path\to\file\test\test.docx "C:\path\to\file\test2\test-%date:~-7,2%-%date:~-10,2%-%date:~-4,4% %time:~-11,2%%time:~-8,2%.docx"
我尝试集成以下语法:
copy /b filename.ext +,,
我来自: https://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch/764716
但是,当我在源文件后面加上+时,它什么也没输出。
copy /b "C:\path\to\file\test\test.docx" + "C:\path\to\file\test2\test-
%date:~-7,2%-%date:~-10,2%-%date:~-4,4% %time:~-11,2%%time:~-8,2%.docx"
我还尝试在批处理文件中调用PowerShell脚本以更新上次修改日期:
$file = Get-Item C:\Path\TO\test.docx
$file.LastWriteTime = (Get-Date)
copy C:\path\to\file\test\test.docx "C:\path\to\file\test2\test-
%date:~-7,2%-%date:~-10,2%-%date:~-4,4% %time:~-11,2%%time:~-8,2%.docx"
powershell -file C:\path\to\powershell.ps1
无论哪种方式都无法正常工作,我是新手,所以可能缺少一些简单的东西。
答案 0 :(得分:0)
我能够弄清楚这一点。现在,我的批处理文件如下:
powershell -command "(Get-Item "C:\path\to\file\test\test.docx").LastWriteTime = (Get-
Date)"
copy C:\path\to\file\test\test.docx "C:\path\to\file\test2\test-%date:~-7,2%-
%date:~-10,2%-%date:~-4,4%%time:~-11,2%%time:~-8,2%.docx"
首先修改文件的最后编辑日期,然后将其复制到带有时间和日期的test 2文件夹中。
答案 1 :(得分:0)
我很好奇您的意思:
我在Word文档中插入了一个字段,该字段动态地更新了上次编辑文件的时间。
如果您复制文件,则其内容不会更改,并且LastWriteTime保持不变,
那么,为什么要set
将LastWriteTime设置为当前日期和时间?
根据您尝试在cmd.exe中进行复制的操作,您确实省略了两个逗号,应该这样做:
copy /b "C:\path\to\file\test\test.docx" + , , "C:\path\to\file\test2\test-%date:~-7,2%-%date:~-10,2%-%date:~-4,4% %time:~-11,2%%time:~-8,2%.docx"
我的评论中的PowerShell建议:
'C:\path\to\file\test\test.docx' |
Get-Item |
Copy-Item -Destination {'{0}\{1}-{2:MMddyyyy\ HHmm}{3}' -f `
$_.Directory, $_.Basename,
$_.LastWriteTime, $_.Extension} -WhatIf
可以修改为使用日期时间附录重命名所有文件,以反映实际的LastWriteTime
。
Get-ChildItem -File -Filter *.docx |
Where BaseName -Match '-\d{8} \d{4}$' |
Rename-Item -NewName {'{0}-{1:MMddyyyy\ HHmm}{2}' -f `
$_.Basename.Replace($Matches[0],''),
$_.LastWriteTime, $_.Extension} -WhatIf
如果NewName相同,则Rename-Item将忽略它。
与Copy-Item相比,Rename-Item不允许目录。