Windows эквивалент командной строки «touch»?
Что вы используете, если хотите обновить поле, модифицированное датой файла в Windows?
- команды , доступные через C ++, .NET, C # или что-то родное для Windows (желательно Vista)
- инструменты /приложения желательно бесплатно и, если возможно, с открытым исходным кодом, а также
Изменить: уже существует страница для приложений, как указано CheapScotsman здесь .
Если кто-то знает, как я могу это сделать с помощью C ++, C #, WSH или что-то подобное, хорошо и хорошо, иначе я бы подумал, что все остальное связано с связанным вопросом.
30 ответов
Если вы хотите коснуться даты штампа файла с помощью окон, используйте следующую команду в командной строке:
(где filename.ext — имя вашего файла). +,, — это специальный флаг для copy , говорящий просто обновить дату /время в файле :
* Изменение времени и даты файла
Если вы хотите присвоить текущее время и дату файлу без изменения файла, используйте следующий синтаксис:
В запятых указывается пропуск параметра Destination.
Изменить на основе комментариев Луми и Джастина: поместите это в пакетный файл, например. touch.cmd
Это работает, даже если файл отсутствует в текущем каталоге (протестирован в Windows 7).
Я использовал и рекомендую unxutils , которые являются родными портами Win32 многих распространенных утилит Unix. Существует команда touch .
Если вы хотите изменить последнюю измененную дату файла (это было мое дело):
- Создает file , если он не существует.
- Оставляет только содержимое файла.
- Просто использует встроенные модули cmd .
- Обновлены те последний доступ и создание .
UPDATE
Г! Это не работает с файлами только для чтения, тогда как touch делает. Я предлагаю:
Вот объяснение Технетом таинственных «+» и запятых:
copy /b Источник + ,,
Эти запятые указывают на отсутствие Параметр назначения.
Команда копирования поддерживает объединение нескольких файлов в один файл назначения. Поскольку пустое назначение не может быть задано с использованием символа пробела в командной строке, для обозначения этого можно использовать две запятые.
Если вам нравится его кодирование самостоятельно, .NET предлагает File.SetLastAccessTime , File.SetCreationTime и File.SetLastWriteTime .
здесь рекурсивная версия с использованием powershell . это изменит последнее измененное время для всех файлов и подкаталогов, а также файлы в подкаталогах этого каталога
Проект GnuWin32 имеет порты Windows из версий Gnu утилит командной строки Unix.
Он поставляется в виде нескольких отдельных пакетов, и вы можете установить только нужные вам команды без каких-либо других зависимостей. Для touch вам понадобится пакет CoreUtils .
Я попробовал это, чтобы создать пустой файл в моем пакетном скрипте. Вы можете использовать это:
cygwin поставляется с touch . Я знаю, что вы упомянули, что вы не хотите устанавливать целую фреймворк, но cygwin довольно легкий и может быть вызван из окна команд dos без включения всей командной строки, подобной unix.
Вы также можете контролировать, какие инструменты устанавливать, поэтому вы можете просто установить файл touch.exe и оставить остальную часть фреймворка.
Вот простой regfile, который я написал в добавить правую кнопку мыши » touch «в проводнике Windows . Слишком легко его создать, так как он просто вызывает:
Я использовал его раньше, и он работает хорошо — без установки, без DLL и т. д.
- Не нужно устанавливать.
- Если вы хотите, вы можете даже изменить источник.
Вы также можете установить Cygwin , который дает вам Touch, а также множество других команд * NIX.
Существуют порты Windows многих утилит Unix. Посмотрите unxutils или Проекты GnuWin32 .
Из аналогичного вопроса о переполнении стека.
Для обновления временных меток (игнорируя другие функции touch ), я бы пошел с:
Funuction Software Touch — бесплатная утилита «touch», которая позволяет вам изменить время /дату и /или метки атрибутов на один или несколько файлов. В дополнение, FS Touch может добавить /вычесть указанное количество секунд из существующее время файла. Вы можете указать, какие файлы и /или подкаталоги для изменения через «сложные маски файлов». Программа может быть запускаться из интерактивной или командной строки. Новое для версии 7.2 — это командной строки, чтобы изменить измененную временную метку файла +/- заданное количество секунд.
FS Touch работает в Windows XP, Vista, Windows 7 и & Windows 8.
Если вы используете git для одного или нескольких проектов, на основе git-bash на основе mingw для Windows есть команда touch . Я хочу поблагодарить @ greg-hewgill за то, что указал на то, что для Windows существуют утилиты nix, потому что именно это заставило меня попытаться прикоснуться к git-bash.
Этот контент можно сохранить в файл reg. Это добавит контекстное меню правой кнопки мыши для всех файлов с возможностью «Touch File» (проверено на Windows 7). Скопируйте все следующие строки в файл reg. Запустите файл и подтвердите вопрос. Щелкните правой кнопкой мыши на любом файле (или нескольких файлах). Теперь доступна опция «Touch File».
в PowerShell попробуйте:
NI является псевдонимом New- Элемент .
Сохраните следующее как touch.bat в папке% windir% \ system32 или добавьте папке, в которой она сохраняется в вашей переменной среды PATH:
Я нашел быстрый способ сделать это, если у вас установлен vim (не большой для больших файлов, откроет весь файл и закроет его . )
«+» устанавливает аргумент для запуска следующих команд. «WQ!» это «написать, выйти, заставить». Это откроет файл, сохранит его, а затем закроет его сразу же.
Файл fsutil createnew new.txt 0
Пять альтернатив, упомянутых выше, плюс три других, не упомянутых здесь, можно найти в SuperUser: » Windows Recursive Touch Command »
Это немного не связано с исходным вопросом, но я считаю это очень полезным для Windows из-за GUI.
Я использую утилиту TouchPro, которая предоставляет графический интерфейс пользователя (встраивается в оболочку проводника):
Люди Unix исправили общую проблему обновления даты файла любого файла с помощью команды touch . Однако для Windows иногда возможен более простой метод для особых случаев.
Мне нужно обновить временную метку ярлыка приложения в Windows 8.1, чтобы сделать видимыми изменения цвета фона панели приложений, см. этот вопрос SO . Вместо того, чтобы использовать один из умных инструментов выше, мне легче редактировать поле комментария ярлыка. Большинство людей оставляют это пустое, но, конечно, полезный комментарий быстро задуман. И если комментарий существует, добавление или удаление последнего периода никогда не наносит вреда.
Я ценю, что это старый вопрос, я просто обнаружил, что касаюсь своей системы Windows 10. Я загрузил и установил Git из здесь (я думаю), и это выглядит как прикосновение и различные другие Утилиты находятся в папке bin.
Ну, если вы действительно хотите иметь команду touch , вы можете поместить ее в пакетный файл с именем touch.bat и вставьте его в C:\Windows :
Мне нужна функция «touch» для клонирования /дублирования дат файла из другого файла, изначально и может использоваться из пакетного файла.
Итак, видеофайл для «перетаскивания» в пакетный файл, запускается FFMPEG, затем «Дата создания» и «Дата изменения» из входного файла копируется в выходной файл.
Это казалось простым вначале, пока вы не обнаружите, что пакетные файлы ужасны при работе с именами файлов Unicode, встроенный PowerShell испорчен символами имен файлов, а двойной выход из них — это кошмар.
Мое решение сделало «touch» частью отдельный сценарий PowerShell, который я назвал «CLONE-FILE-DATE.ps1», и он содержит:
Тогда вот пример использования в моем командном файле CONVERT.BAT:
Я думаю, что PowerShell читаем, поэтому просто объясните, что говорит пакет:
dp0 — это текущий каталог командного файла.
1 — это путь к файлу, опущенному на пакет без кавычек.
CHCP 65001> nul устанавливает символы в UTF-8 и проглатывает вывод.
-ExecutionPolicy ByPass позволяет запускать PowerShell без необходимости изменения глобальной политики, которая существует для предотвращения случайного запуска скриптов.
Create an empty file on the commandline in windows (like the linux touch command)
On a windows machine I get this error
‘touch’ is not recognized as an internal or external command, operable program or batch file.
I was following these instructions which seem to be linux specific, but on a standard windows commandline it does not work like this:
Is there a windows equivalent of the ‘touch’ command from the linux / mac os / unix world ? Do I need to create these files by hand (and modify them to change the timestamp) in order to implement this sort of command? I am working with node and that doesn’t seem very . node-ish.
20 Answers 20
An easy way to replace the touch command on a windows command line like cmd would be:
This will create 0 bytes in the your_file.txt file.
This would also be a good solution to use in windows batch files.
Another way of doing it is by using the echo command:
echo. — will create a file with one empty line in it.
If you need to preserve the content of the file use >> instead of >
You can also use call command.
Calls one batch program from another without stopping the parent batch program. The call command accepts labels as the target of the call.
Windows does not natively include a touch command.
You can use any of the available public versions or you can use your own version. Save this code as touch.cmd and place it somewhere in your path
It will iterate over it argument list, and for each element if it exists, update the file timestamp, else, create it.
You can use this command: ECHO >> filename.txt
it will create a file with the given extension in the current folder.
UPDATE:
for an empty file use: copy NUL filename.txt
The answer is wrong, it only works when the file does not exist. If the file exists, using the first does nothing, the second adds a line at the end of the file.
The correct answer is:
On windows Power Shell, you can use the following command:
Note: New-Item can be replaced with its alias ni
I’m surprised how many answers here are just wrong. Echoing nothing into a file will fill the file with something like ECHO is ON , and trying to echo $nul into a file will literally place $nul into the file. Additionally for PowerShell, echoing $null into a file won’t actually make a 0kb file, but something encoded as UCS-2 LE BOM , which can get messy if you need to make sure your files don’t have a byte-order mark.
After testing all the answers here and referencing some similar ones, I can guarantee these will work per console shell. Just change FileName.FileExtension to the full or relative-path of the file you want to touch ; thanks to Keith Russell for the COPY NUL FILE.EXT update:
CMD w/Timestamp Updates
copy NUL FileName.FileExtension
This will create a new file named whatever you placed instead of FileName.FileExtension with a size of 0 bytes. If the file already exists it will basically copy itself in-place to update the timestamp. I’d say this is more of a workaround than 1:1 functionality with touch but I don’t know of any built-in tools for CMD that can accomplish updating a file’s timestamp without changing any of its other content.
CMD w/out Timestamp Updates
if not exist FileName.FileExtension copy NUL FileName.FileExtension
Powershell w/Timestamp Updates
if (!(Test-Path FileName.FileExtension -PathType Leaf))
Yes, it will work in-console as a one-liner; no requirement to place it in a PowerShell script file.
Сответствие консольных команд Windows и Linux.
При переходе с Windows на Linux и наоборот, для тех, кто знаком с командной строкой, может пригодиться небольшая справка по соответствию консольных команд этих операционных систем. Естественно, полного соответствия, за редким исключением, не бывает, и в приведенной таблице собраны команды, идентичные по результатам выполнения или функционально близкие.
Соответствие команд CMD Windows командам Linux
Описание | Команда CMD Windows | Команда Linux |
Вызов справочной системы | HELP | apropos, man, whatis |
Вызов командного интерпретатора (оболочки) | CMD | bash, csh, sh |
Очистка экрана | CLS | clear, reset |
Вывод сообщения на экран | ECHO | echo |
Пауза в работе | PAUSE | sleep |
Настройка параметров терминала | MODE | stty |
Установка значений переменных окружения (указание путей к каталогам) | PATH, SET, SETx | env, set |
Изменение системной даты | DATE | date |
Изменение системного времени | TIME | date |
Выход из командной строки | EXIT | exit |
Работа с файлами и каталогами | ||
Отображение списка файлов и каталогов | DIR | dir, ls |
Создание каталога | MKDIR | mkdir |
Удаление каталога | RMDIR | rmdir |
Удаление файла | DEL, ERASE | rm |
Переход в другой каталог | CD | cd |
Копирование файлов или каталогов | COPY, XCOPY | cp |
Переименование файла | REN, RENAME | mv |
Перемещение файлов | MOVE | mv |
Поиск файла | WHERE | find, locate |
Вывод на экран содержимого файла | TYPE, MORE | cat, less, more |
Сравнение содержимого двух файлов | COMP, FC | cmp, diff, diff3, sdiff |
Сортировка строк в текстовом файле | SORT | sort |
Изменение атрибутов файла | ATTRIB | chmod |
Создание символьной ссылки на файл или каталог | MKLINK | ln |
Резервное копирование данных | ROBOCOPY | cpio, tar |
Вызов текстового редактора | EDIT (нет в Windows Vista и старше) | vi |
Работа с томами и разделами | ||
Создание разделов | FDISK | fdisk |
Управление разделами | DISKPART | parted, partx |
Форматирование диска, создание файловой системы | DISKPART, FORMAT | mformat, mkfs |
Проверка файловой системы | CHKDSK | fsck |
Управление системой. | ||
Отобразить список процессов | TASKLIST, QUERY PROCESS | ps |
Уничтожить процесс | TASKKILL | kill, killall |
Перезагрузить компьютер | SHUTDOWN | shutdown, reboot |
Выключить компьютер | SHUTDOWN | shutdown, halt |
Выполнить команду от имени другого пользователя | RUNAS | sudo |
Отобразить имя компьютера | HOSTNAME | hostname |
Пользователи и группы. | ||
Создать нового пользователя | NET USER | useradd |
Изменить параметры пользователя | NET USER | usermod |
Изменить пароль пользователя | NET USER | passwd |
Удалить пользователя | NET USER | userdel |
Создать новую группу пользователей | NET GROUP | groupadd |
Изменить параметры группы | NET GROUP | groupmod |
Удалить группу | NET GROUP | groupdel |
Отобразить список активных пользователей | QUERY USER | users |
Работа с сетью. | ||
Работа с таблицей соответствия IP и MAC адресов ARP | arp | arp |
Конфигурация протокола IP | IPCONFIG, NETSH | ifconfig, ip |
Работа с таблицей маршрутизации | ROUTE | route |
Опрос узла по протоколу ICMP | PING | ping |
Клиент Telnet | TELNET | telnet |
Работа с DNS-сервером в интерактивном режиме | NSLOOKUP | dig, nslookup |
Трассировка маршрута к удаленному узлу | TRACERT | traceroute |
Отобразить статистику сетевых соединений | NETSTAT | netstat |
Строчные и заглавные буквы для команд командной строки Windows воспринимаются одинаково, ECHO и echo — будет интерпретировано как одна и та же команда. При работе в командной строке Linux соблюдение регистра символов обязательно.
Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой «Поделиться» для своей социальной сети