Добавление даты / времени в файл И обновление даты последнего изменения / сохранения - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь автоматизировать переименование некоторых файлов, но мне также нужно, чтобы файл обновлял время «последнего изменения», поскольку в документ 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

Не могу заставить его работать в любом случае, я новичокк этому так, вероятно, упускает что-то простое.

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Мне немного любопытно, что вы имеете в виду:

У меня есть поле, вставленное в документ 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 не допускает каталог.

0 голосов
/ 02 июня 2019

Я смог понять это. Мой пакетный файл теперь выглядит следующим образом:

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 с добавлением времени и даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...