Что вы используете, когда хотите обновить поле с измененной датой файла в Windows?
- Команды, доступные через C ++, .NET, C # или что-то родное для Windows (предпочтительно Vista)
- инструменты / приложения желательно бесплатные, а также по возможности с открытым исходным кодом
Изменить: здесь уже есть страница для приложений, как указано CheapScotsman здесь .
Если кто-нибудь знает, как я могу сделать это через C ++, C #, WSH или что-то подобное, ну и хорошо, иначе я бы подумал, что все остальное рассматривается в связанном вопросе.
windows
file-attributes
touch
facepalmd
источник
источник
REM.>a
Ответы:
Если вы хотите прикоснуться к отметке даты файла с помощью Windows, используйте следующую команду в командной строке:
(где имя
filename.ext
вашего файла). Это+,,
специальный флаг,copy
указывающий ему просто обновить дату / время в файле :Редактируйте на основе комментариев Луми и Джастина: поместите это в пакетный файл, например. touch.cmd
Это работает, даже если файл не находится в текущем каталоге (протестировано в Windows 7).
источник
type touch.bat
это@echo off
и следующая строкаcopy /b %1 +,,
- вставьте этоC:\bin
или что у вас есть для ваших собственных сценариев, и тогда вы можете использовать его какtouch myfile.txt
.copy /b Source+,, Source
- где указанSource
полный путь к файлу+,,
: blogs.msdn.com/b/oldnewthing/archive/2013/07/10/10432879.aspxЯ использовал и рекомендую unxutils, которые являются родными портами Win32 многих распространенных утилит Unix. Там есть
touch
команда.источник
"test тест τεστ.txt"
touch
команды. Это похоже на все, что есть в средах nix: вы можете сделать это или сделать sudo, или нет, потому что у вас нет привилегий.Если все, что вам нужно, это изменить дату последнего изменения файла (в моем случае):
источник
gci -recu -inc "*.*" | % { $_.LastWriteTime = Get-Date }
file
если его не существует.cmd
встроенные модули.ОБНОВИТЬ
Г! Это не работает для файлов только для чтения, в то время как
touch
работает. Я предлагаю:источник
filename +,,
синтаксис.@ Тир-том- взрывы:
Вот объяснение Technet таинственных '+' и запятых:
Команда copy поддерживает объединение нескольких файлов в один целевой файл. Поскольку пустое место назначения не может быть указано с помощью символа пробела в командной строке, для обозначения этого можно использовать две запятые.
А это ссылка на команду Technet по копированию: http://technet.microsoft.com/en-us/library/bb490886.aspx
источник
Если вы чувствуете , как кодирование его самостоятельно, .NET предлагает
File.SetLastAccessTime
,File.SetCreationTime
иFile.SetLastWriteTime
методы.источник
вот рекурсивная версия с использованием powershell ... это изменит время последнего изменения всех файлов и подкаталогов, а также файлов в подкаталогах этого каталога
источник
ls * -recurse | % { $_.LastWriteTime = Get-Date }
Проект GnuWin32 имеет порты Windows версий Gnu утилит командной строки Unix.
Он поставляется в виде нескольких отдельных пакетов, и вы можете устанавливать только те команды, которые вам нужны, без каких-либо других зависимостей. Для
touch
вас потребуется пакет CoreUtils .источник
cygwin
идет сtouch
. Я знаю, что вы упомянули, что вы не хотите устанавливать весь фреймворк, но Cygwin довольно легок и может вызываться из окна командной строки DOS без включенной всей командной строки, подобной Unix.Вы также можете контролировать, какие инструменты устанавливать, чтобы вы могли просто установить
touch.exe
файл и оставить остальную часть фреймворка.источник
Я попытался это создать пустой файл в моем пакетном скрипте. Вы можете использовать это:
источник
echo pie>.gitignore
работал лакомство - спасибо!.gitignore.
и при нажатии Enter Windows удаляет завершающий период. Сумасшедший, но это работает.Вот простой regfile, который я написал, чтобы добавить «сенсорный» щелчок правой кнопкой мыши в проводнике Windows . Также было бы легко написать скрипт, так как он просто вызывает:
источник
copy nul some_file
создать пустой файл (который, как я вижу,touch
чаще всего используется).Родные порты win32 для многих команд Unix , включая сенсорные.
Я использовал его раньше, и он работает хорошо - без установки, без DLL и т. Д.
источник
Попробуйте это из CodeProject .
источник
Вы также можете установить Cygwin, который дает вам Touch, а также множество других команд * NIX.
источник
Есть порты Windows многих утилит Unix. Посмотрите на проекты unxutils или GnuWin32 .
источник
Из аналогичного вопроса о переполнении стека.
Для обновления меток времени (игнорируя другие функции
touch
) я бы выбрал:источник
Как насчет кода проекта «Touch для Windows»: http://www.codeproject.com/KB/applications/touch_win.aspx
редактировать; Тот же вопрос, что и здесь: https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command/51439
источник
с сайта:
источник
Этот контент может быть сохранен в reg-файл. Это добавит контекстное меню правой кнопки мыши для всех файлов с возможностью «Touch File» (протестировано в Windows 7). Скопируйте все следующие строки в файл reg. Запустите файл и подтвердите вопрос. Щелкните правой кнопкой мыши по любому файлу (или нескольким файлам) - теперь доступна опция «Touch File».
источник
Если вы используете git для одного или нескольких проектов, команда mingw
git-bash
для Windows имеетtouch
команду. Я хочу поблагодарить @ greg-hewgill за указание на то, что утилиты 'nix существуют для windows, потому что именно это натолкнуло меня на мысль попробовать touch в git-bash.источник
в PowerShell попробуйте:
NI
псевдоним командлета New-Item .источник
ni
команде, и, возможно, опишите больше, что делает команда?New-Item
Командлет не может быть использован для обновления штампа времени существующего файла.Сохраните следующий файл как touch.bat в папке% windir% \ system32 или добавьте папку, в которой он сохраняется, в переменную среды PATH:
Пример использования:
Ссылка: Microsoft KB 69581
источник
Я нашел быстрый способ сделать это, если у вас установлен vim (не подходит для больших файлов, откроет весь файл, затем закроет его ...)
«+» Устанавливает аргумент для запуска следующих команд. "WQ!" это «написать, выйти, заставить». Это откроет файл, сохранит и закроет его сразу после этого.
источник
Я хотел, чтобы «сенсорная» функция клонирования / дублирования файлов датировалась из другого файла, изначально, и была пригодна для использования из пакетного файла.
Таким образом, «перетащите» видеофайл в пакетный файл, FFMPEG запускается, затем «Дата создания» и «Дата изменения» из входного файла копируются в выходной файл.
Сначала это казалось простым, пока вы не обнаружили, что пакетные файлы ужасны при обработке имен файлов в Юникоде, встроенный PowerShell портится с символами имен файлов, и двойное экранирование - это кошмар.
Моим решением было сделать «сенсорную» часть отдельным скриптом PowerShell, который я назвал «CLONE-FILE-DATE.ps1», и он содержит:
Тогда вот пример использования в моем пакетном файле 'CONVERT.BAT':
Я думаю, что PowerShell читабельна, поэтому я просто объясню, что такое пакетная речь:
% ~ dp0 - текущий каталог командного файла.
% ~ 1 - путь к файлу, помещенному в пакет без кавычек.
CHCP 65001> nul устанавливает символы в UTF-8 и глотает вывод.
-ExecutionPolicy ByPass позволяет запускать PowerShell без необходимости изменять глобальную политику, которая предотвращает случайное выполнение сценариев людьми.
источник
Пытаться
fsutil файл createnew new.txt 0
источник
The FSUTIL utility requires that you have administrative privileges.
- и он не ведет себя так, какtouch
для существующих файлов.Пять вариантов, упомянутых выше, плюс еще три, не упомянутые здесь, можно найти в SuperUser: «Windows Recursive Touch Command»
источник
Это немного не связано с первоначальным вопросом, но я считаю, что это очень полезно для Windows из-за графического интерфейса.
Я использую утилиту TouchPro, которая предоставляет графический интерфейс ( встроен в оболочку проводника):
http://www.jddesign.co.uk/products/touchpro/touchpro.htm
источник
Ну, если вы действительно хотите, чтобы
touch
команда была доступна, вы можете поместить ее в пакетный файлtouch.bat
и вставить в нееC:\Windows
:Достаточно просто.
источник
Люди из Unix исправили общую проблему обновления даты любого файла с помощью команды touch . Однако для Windows иногда более простой способ возможен в особых случаях.
Мне нужно обновить временную метку ярлыка приложения в Windows 8.1, чтобы сделать видимыми изменения цвета фона плитки приложения, см. Этот вопрос ТАК . Вместо того, чтобы реализовывать один из умных инструментов, описанных выше, мне легче редактировать поле комментариев ярлыка. Большинство людей оставляют это пустым, но, конечно, полезный комментарий быстро придумывается. И если комментарий существует, добавление или удаление последнего периода никогда не повредит.
источник
Я ценю, что это старый вопрос, я только что обнаружил прикосновение к моей системе Windows 10. Я скачал и установил Git отсюда (я думаю), и похоже, что touch и другие другие утилиты находятся в папке bin.
источник