У нас есть приложение, которое работает с файлами. Приложение прерывается всякий раз, когда оно сталкивается с файлом, в котором нет даты изменения / даты создания (поле буквально мигает в проводнике и через get-childitem)
Как я могу создать такой файл в нашей среде, чтобы попробовать несколько решений локально? Я пробовал глупые вещи, как
$Files = ls "C:\Users\Triumvirate\tmp" ForEach ($File in $Files){ $File.LastWriteTime = $null }
но это не похоже на работу. Google тоже не очень помог, но я был бы благодарен за любые советы в правильном направлении.
Не существует файла, в котором нет даты изменения / даты создания.
harrymc 6 лет назад
0
Это не совсем так, потому что я видел эти файлы в удаленном сеансе с нашими пользователями, а затем исправил приложение, переместив файлы в другое место (которое наше приложение не трогало). Их измененная дата пуста. Это определенно происходит, например, [здесь] (https://central.owncloud.org/t/date-modified-field-blank-cannot-sync/10927) или [здесь] (https: / /www.techsupportforum.com/forums/f10/date-modified-is-blank-in-windows-explorer-266648.html)
Aemerzel 6 лет назад
0
Ваша первая ссылка: * При более внимательном рассмотрении при просмотре свойств файла поле «Дата изменения» для всех недавно синхронизированных файлов на самом деле говорит «31 декабря 1969 года» ... *. Дата изменения может быть мусором, но она есть.
harrymc 6 лет назад
0
Черт возьми, ты гений. Дата, измененная в проводнике, будет отображаться пустой после $ Files = ls "C: \ Users \ Triumvirate \ tmp" ForEach ($ File in $ Files) {$ File.LastWriteTime = Get-Date ("31 / 12/1969 ")}
Aemerzel 6 лет назад
0
Кажется, ты это уже нашел. Мне удалось изменить дату / время файла, чтобы очистить. Создал код C # и установил дату `01.01.1970 00: 00: 00`.
Sandeep 6 лет назад
0
Проблема в том, что на самом деле дата была пустой не только в проводнике, но и когда я запускал ls -s из Powershell, тогда как когда я установил дату на 1970, в проводнике дата пуста (что, как я полагаю, ожидается? Работает на моем домашнем ПК) ) но дата * не * пуста, когда я запускаю ls -s
Aemerzel 6 лет назад
0
Где эти файлы создаются? Это внешнее программное обеспечение? Какая ОС и файловая система используются для хранения этих файлов? Не все файловые системы поддерживают все поля.
Sandeep 6 лет назад
0
Sandeep, эти файлы, которые я видел на компьютере пользователя, являются картинками, так что это могут быть некоторые exif shenanigans? ОС Windows 10, файловая система NTFS. ls -s не показывает дату, проводник не показывает дату.
Aemerzel 6 лет назад
0
2 ответа на вопрос
0
harrymc
Вы, очевидно, размещаете файлы на устройстве, которое возвращает даты мусора, которые не отображаются в проводнике.
Если это служба облачного хранилища и даты важны, вы можете рассмотреть возможность перехода к другой службе, если их служба поддержки не может предоставить исправление.
Даты отображаются не только в проводнике, но и в PowerShell через Get-ChildItem -recurse
Aemerzel 6 лет назад
0
В обоих случаях Microsoft может использовать одно и то же программное обеспечение.
harrymc 6 лет назад
0
Harrymc, это определенно возможно, однако, когда я вручную создаю файл с LastWriteTime = 31/12/1969, он не отображается в проводнике, но правильно отображается в Get-childitem, что означает, что он не * точно * совпадает. В деле, которое я расследую, фактически изменена пустая дата, которую я хотел исследовать и повторить, чтобы предложить правильное решение, но я не понимаю, как повторить это. У меня есть подозрение, что, учитывая тот факт, что эти файлы представляют собой изображения с камеры, возможно, что происходит искажение exif, которое вызывает его?
Aemerzel 6 лет назад
0
Винда не понимает exif. Файловая система, предоставляемая этим устройством или службой, содержит мусор в частях записей, которые Windows видит на этом виртуальном диске.
harrymc 6 лет назад
0
0
Aemerzel
Я нашел решение этой неясной проблемы, которую вы можете использовать.
Вот шаги репликации:
Доступ к папке через bash (у меня двойная загрузка, поэтому я сделал это при установке Ubuntu)
touch -d "1/1/1500" filename.extension (Любой год <1600 подойдет, потому что я считаю, что даты Fat64 начинаются с 1601
Просмотр файла в powershell или explorer даст вам пустое «Дата изменения»: