На этот вопрос уже есть ответ здесь:
В PowerShell есть эквивалент touch
?
Например, в Linux я могу создать новый пустой файл, вызвав:
touch filename
В Windows это довольно неудобно - обычно я просто открываю новый экземпляр блокнота и сохраняю пустой файл.
Так есть ли в PowerShell программный способ сделать это?
Я не ищу точное соответствие поведению касания, но просто чтобы найти самый простой из возможных эквивалентов для создания пустых файлов.
windows
windows-8
powershell
powershell-3.0
jsalonen
источник
источник
touch
в Linux.touch
для существующего файла, он обновит время последней записи без изменения файла, см. ссылки на @amiregelz. Этот вопрос имеет высокий рейтинг в Googlepowershell touch
, я хотел предупредить копировщиков о том, что только эта половина может уничтожить данные, а * nix touch - нет. Смотрите ответ @LittleBoyLost, который обрабатывает, когда файл уже существует.Ответы:
Использование перенаправителя добавления «>>» решает проблему удаления существующего файла:
источник
$null > filename
прекрасно работает..gitignore
команду с помощью этой команды и удивляетесь, почему она не работает. BOM является причиной.Чтобы создать пустой файл:
Чтобы обновить метку времени файла:
источник
(gi MyFolder).LastWriteTime = Get-Date
. Вы можете использовать это для файлов тоже.ni example.txt
Вот версия, которая создает новый файл, если он не существует, или обновляет отметку времени, если он существует.
источник
Touch
это не «одобренный» глагол (не то, чтобы это существенное требование: msdn.microsoft.com/en-us/library/ms714428. aspx ).File
хорошо, кстати. Я рекомендую именаSet-File
илиSet-LastWriteTime
или, мой любимый,Update-File
. Кроме того, я бы порекомендовалAdd-Content $file $null
вместоecho $null > $file
. Наконец, установите псевдоним с,Set-Alias touch Update-File
если вы хотите продолжать использовать командуtouch
New-Alias -Name Touch Touch-File
В PowerShell вы можете создать аналогичную функцию Touch как таковую:
Использование:
touch myfile.txt
Источник
источник
function touch { if((Test-Path -Path ($args[0])) -eq $false) { set-content -Path ($args[0]) -Value ($null) } }
я предпочитаю
для этой задачи. Для работы с непустыми файлами вы можете использовать
fc
это просто псевдоним для Format-Custom . Я выбрал его, потому что это короткая команда, которая ничего не делает в этом контексте, ноуп . Это также приятно, потому что если вы забудете о перенаправлениивместо того, чтобы дать вам ошибку, опять же это просто ничего не делает. Некоторые другие псевдонимы, которые будут работать
источник
Уже есть куча достойных ответов, но мне очень нравится псевдоним New-Item, который просто: ni
Вы также можете отказаться от объявления типа файла (которое, как я полагаю, подразумевается при добавлении расширения), поэтому для создания файла javascript с именем «x» в моем текущем каталоге я могу просто написать:
3 символа быстрее, чем прикосновение!
источник
ni : The file 'x.js' already exists
Я собрал различные источники и нашел следующее, которое отвечало моим потребностям. Мне нужно было установить дату записи DLL, которая была собрана на машине в другом часовом поясе:
Конечно, вы также можете установить его для нескольких файлов:
источник
Откройте файл своего профиля:
Добавьте следующую строку:
Сохраните его и перезагрузите свой профиль $, чтобы сразу его использовать. (Не нужно закрывать и открывать powershell)
Чтобы добавить новый файл в текущий каталог, введите:
Чтобы добавить новый файл в директорию myfolder, введите:
Если файл с таким именем уже существует, он не будет переопределен. Вместо этого вы получите ошибку.
Я надеюсь, что это помогает
Бонусный совет:
Вы можете сделать эквивалент mkdir, добавив следующую строку:
То же использование:
источник
Не удалит содержимое файла, но также не обновит дату.
источник
Похоже, что куча ответов здесь не учитывает кодировку файлов.
Я просто столкнулся с этой проблемой по разным причинам, но
оба производят файл UTF-16-LE, в то время как
создает файл UTF-8
По какой-то причине
fc > $file
иfc >> $file
, кажется, также производить файлы UTF-8.дает вам файл UTF-8-BOM, в то время как
дает вам файл UTF-8. Другие допустимые (но не проверенные) кодировки, которые поддерживает Out-File: [[-Encoding] {unknown | строка | Юникод | bigendianunicode | utf8 | utf7 | utf32 | ASCII | по умолчанию | ОЙ}]. Вы также можете передать данные в Out-File, чтобы дать файлу некоторые текстовые данные для хранения, а также флаг -append. Например:
этот пример не обновляет временную метку по какой-то причине, но этот:
Хотя у него есть побочный эффект добавления «foo» в конец файла.
Если вы не уверены в том, какая у вас кодировка, я обнаружил, что VS-Code имеет отличную функцию, где в правом нижнем углу написано, что такое кодировка. Я думаю, что Notepad ++ также имеет аналогичную функцию.
источник
Set-Content -Path $file -value $null
делает работу, и это не влияет на кодировку файлов. Проверьте также ss64 версиюtouch
.Для сценария, который вы описали (когда файл не существует), это быстро и просто:
Тем не менее, другим распространенным способом использования
touch
является обновление метки времени файла. Если вы попытаетесь использовать мойsc
пример таким образом, он сотрет содержимое файла.источник
sc
значит? Редактировать: разобрался («Set Content»)Чтобы создать пустой файл в Windows, способ поста следующий:
Ноль - размер файла в байтах, так что это также полезно для создания большого файла (они не будут полезны для тестирования сжатия, так как не содержат реальных данных и будут сжимать практически до нуля)
источник
На веб-странице http://xahlee.info/powershell/PowerShell_for_unixer.html предлагается:
и это действительно создает новый файл нулевого размера.
Это не выполняет другую функцию Unix
touch
, а именно обновление временной метки, если имя файла уже существует, но вопрос подразумевает, что пользователь просто хочет создать файл нулевого размера в интерактивном режиме, не прибегая к Notepad.источник
Я использовал название «Write-File», потому что «Touch» не является утвержденным глаголом PowerShell . Я все еще называю это как прикосновение, как бы то ни было.
Touch.psm1
Использование:
Поддержка:
Credential
для сетевых путейVerbose
,Debug
ИWhatIf
флагиисточник
New-Item
была предложена в четырех предыдущих ответах. Вы предоставили для этого 20-строчную упаковку. Можете ли вы объяснить более четко, какое преимущество имеет ваше решение перед предыдущими? Например, каковы этиVerbose
,Debug
иWhatIf
флаги, и т.д.?New-Item
, что оно обновляет временную метку существующих файлов.