Создание нового файла через Windows Powershell

Я искал в Google вопрос, указанный ниже, но не нашел ответа. Может ли кто-нибудь помочь мне в этом; Какая команда для создания нового файла с помощью Windows Powershell?


Чтобы создать файл с помощью echo

  echo some-text> filename.txt  

Пример:

  C: > echo Это образец текстового файла> sample.txtC: > введите sample.txt Это образец текстового файла C: >  

Чтобы создать файл с помощью fsutil

  fsutil file createnew filename number_of_bytes  

Пример:

  fsutil file createnew sample2.txt 2000 Создание файла C:  sample2.txt C:  data> dir01/23/2016 21:34 PM 2,000 sample2.txtC:  data>  

Ограничения

Fsutil могут использовать только администраторы. Для пользователей без прав администратора возникает ошибка ниже.

  c: > fsutil file/?  

Утилита FSUTIL требует что у вас есть административные привилегии. c:>

Надеюсь, это поможет!


54

Полагаю, вы пытаетесь создать текстовый файл?

  New-Item c:  scripts  new_file.txt -type  файл  

Где «C: scripts new_file.txt» — это полный путь, включая имя и расширение файла.

Взято из статьи TechNet

Улучшите этот ответ
ответил 01 авг., В 19:37
  • ++ , но обратите внимание, что вы не создаете текстовый файл, вы создаете файл с нулевым байтом (пустой файл), который не имеет внутреннего типа. — mklement0 02 авг. ’17 в 1:13
  • 2
    Это должен быть ответ. Get, Start, New и т. Д. — это новая эра командлетов, которые отлично подходят для системного администратора. Просто оставил старую команду. — Беньямин Лиманто 24 янв. ’19 в 16:50
добавить комментарий |

Полагаю, вы пытаетесь создать текстовый файл?

   Новый элемент c:  scripts  new_file.txt -type file  

Где «C: scripts new_file.txt» — это полный путь, включая имя файла и расширение.

Взято из статьи TechNet


16

street smart (быстро, грязно, но работает): (может изменить файл и добавить невидимый символ, который может вызвать сбой компилятора)

  $ null  > file.txt $ null> файл. html  

Метод из учебника:

  New-Item -path  -type file   

пример:

  New-Item -path "c: " -type file -name "somefile.txt"  

ИЛИ

  ni file.xt -type file  

отсутствие параметра -path означает, что создает его в текущем рабочем каталоге

Улучшите этот ответ
отредактировано 24 октября 2018 в 7:01
Сообщество ♦
111 серебряный значок
ответил 24 июня ’18 в 11:38
  • Так много отличных опций, особенно сокращенный cmd ni с рабочими ужасными ctory — Бен Сьюардс 5 нояб., 20:15
добавить комментарий |

street smart (быстро, грязно, но работает): (может изменить файл и добавить невидимый символ, что может вызвать сбой компилятора)

  $ null> file.txt $ null> file.html  

Метод из учебника:

  New-Item -path  -type file  

пример:

   New-Item -path "c: " -type file -name "somefile.txt"  

OR

  ni файл  .xt -type файл  

отсутствие параметра -path означает, что он создается в текущем рабочем каталоге


10

путь>

  ni filename.txt  

Заменить filename.txt с вашим файлом.

Я нашел, что это самый простой ответ на вопрос, и обратитесь к другим ответам для получения дополнительных сведений.

Я докажите этот ответ
19 февраля ’19 в 20:02
  • 1
    Сразу отметим, что ni — это псевдоним по умолчанию для команды New-Item . Информацию о псевдониме для конкретной команды можно просмотреть с помощью команды gal -definition , например gal -definition New-Item . — Диллон, 07 авг., 14:43
  • 1
    Мне очень понравился этот ответ. Также ni (New-Item) создает файл с кодировкой UTF-8, а echo создает его с кодировкой ucs-2 le bom (UTF-16).. Если вы не измените кодировку, файлы, созданные с помощью echo, будут в два раза больше. — Des, 15 сен. ’20 в 9:38
  • Это проще всего. Обратите внимание, что при запуске мой powershell запросил тип, я вставил file — mikey 9 ноября 2020 г., 21:44
добавить комментарий |

  ni filename.txt  

Заменить filename.txt с вашим файлом.

Я нашел, что это самый простой ответ на вопрос, и обратитесь к другим ответам для получения дополнительной информации.


7

Вот еще один способ создать пустой текстовый файл в Powershell, который позволяет вам указать кодировка.

Первый пример

Для пустого текстового файла:

  Out-File C:  filename.txt -encoding ascii  

Без -encoding ascii , Powershell по умолчанию использует Unicode. Вы должны указать ascii , если хотите, чтобы он был доступен для чтения или редактирования другим источником.

Замена файла новым текстом:

  «Текст в первой строке» |  Out-File C:  filename1.txt -encoding ascii  

Это заменяет любой текст в filename.txt на Некоторые Текст в первой строке.

Добавление текста к текущему содержимому файла:

  «Еще текст после старого текста» |  Out-File C:  filename1.txt -encoding ascii -Append  

Указание -Append оставляет текущее содержимое filename .txt и добавляет Some More Text после старого текста в конец файла, оставляя текущее содержимое нетронутым.

Улучшите этот ответ
отредактировал 10 декабря ’18 в 2:31
Joe McMahon
2,9061919 серебряных знаков2929 бронзовых знаков
ответил 9 дек. ’18 в 20:22
добавить комментарий |

Вот еще один способ создать пустой текстовый файл в Powershell, который позволяет вам указать кодировку.

Первый пример

Для пустого текстового файла:

  Исходный файл C:  filename.txt  -encoding ascii  

Без -encoding ascii , Powershell по умолчанию использует Unicode. Вы должны указать ascii , если хотите, чтобы он был доступен для чтения или редактирования другим источником.

Замена файла новым текстом:

  «Текст в первой строке» |  Исходящий файл C:  filename1. txt -encoding ascii  

Это заменяет любой текст в filename.txt на Some Text в первой строке.

Добавление текста к текущему содержимому файла:

  «Еще текст после старого текста» |  Out-File C:  filename1.txt -encoding ascii -Append  

Указание -Append оставляет текущее содержимое filename .txt и добавляет Some More Text после старого текста в конец файла, оставляя текущее содержимое нетронутым.


1

Как многие уже отметили, вы можете создавать файлы с помощью New -File command.
У этой команды есть псевдоним по умолчанию, установленный на ni , но если вы привыкли к командам unix, вы можете легко создать свою собственную команду.

Создайте команду touch , которая будет действовать как New-File следующим образом:

  Set-Alias ​​-Name touch -Value New-Item  

Этот новый псевдоним позволит вам создавать новые файлы следующим образом:

  touch filename.txt  

Это сделает эти 3 команды эквивалентными:

  New-Item filename.txtni filename.txttouch filename.txt  

Имейте в виду, что для того, чтобы это было постоянным, вы должны добавить псевдоним в свой PowerShell профиль. Чтобы узнать его местоположение, просто запустите $ profile на ps. Если вы хотите отредактировать его напрямую, запустите code $ profile (для VSCode), vim $ profile (для vim) или что-то еще.

Улучшить этот ответ
отредактировал 19 ноября ’20 в 5:36
ответил 18 ноя. ’20 в 22:36
добавить комментарий |

Как многие уже отметили, вы можете создавать файлы с помощью команды New-File .
По умолчанию для этой команды задан псевдоним ni , но если вы привыкли к командам unix, вы можете легко создать свою собственную команду.

Create команда touch действует как New-File следующим образом:

  Set-Alias ​​-Name touch  -Value New-Item  

Этот новый псевдоним позволит вам создавать новые файлы следующим образом:

  touch filename.txt  

Это сделает эти 3 команды эквивалентными:

  New-Item filename.txtni filename.txttouch filename.txt   

Имейте в виду, что для того, чтобы это было постоянным, вы должны добавить псевдоним в свой профиль PowerShell.. Чтобы узнать его местоположение, просто запустите $ profile на ps. Если вы хотите отредактировать его напрямую, запустите code $ profile (для VSCode), vim $ profile (для vim) или что-то еще.


0
  # кодировки: файл New-Item  .js -ItemType File -Value "some content" # UTF-8 "some content" |  Out-File main.js -Encoding utf8 # UTF-8-BOMecho "некоторый контент"> file.js # UCS-2 LE BOM  

Улучшите этот ответ
ответил 31 января ’20 в 14:01
добавить комментарий |

  # кодировки: New-Item file.js -ItemType File -Value "some content" # UTF-8 "  некоторый контент »|  Out-File main.js -Encoding utf8 # UTF-8-BOMecho "some content"> file.js # UCS-2 LE BOM  

0

Другой способ (метод, который мне нравится)

   New-Item -ItemType file -Value 'Это просто тестовый файл' -Path C:  Users  Rick  Desktop  test.txt  

Источник: New-Item

Улучшите этот ответ
ответил 19 ноября ’20 в 10:12
добавить комментарий |

Другой способ (метод, который мне нравится)

  New-Item -  Файл ItemType -Value 'Это просто тестовый файл' -Path C:  Users  Rick  Desktop  test.txt  

Source: New-Item



Эквивалент Linux `touch` для создания пустого файла с помощью PowerShell? [дубликат]

Есть ли в PowerShell эквивалент touch ?

Например в Linux я могу создать новый пустой файл, вызвав:

  touch filename  

В Windows это довольно неудобно — обычно Я просто открываю новый экземпляр блокнота и сохраняю пустой файл.

Так есть ли в PowerShell программный способ сделать это?

Я не ищу точно соответствовать поведению касания, но просто чтобы найти самый простой возможный эквивалент для создания пустых файлов.


Использование перенаправителя добавления «>>» решает проблему с удалением существующего файла:

  echo $ null>  > имя файла  

142

К создать пустой файл:

  New-Item -ItemType file example.txt  

Чтобы обновить временную метку файла:

  (gci example.txt) .LastWriteTime = Get-Date  

Улучшите этот ответ
отредактировано 30 сентября ’14 в 18:18
Steven Penny
8,6011919 золотых знаков100100 серебряных знаков147147 бронзовых знаков
ответил 24 января ’13 в 06:39
  • 6
    Думаю, это лучший подход! — Jayesh Bhoot 4 нояб., 15:30
  • 2
    @ riahc3, используйте это: (gi MyFolder) .LastWriteTime = Get-Date . Вы также можете использовать это для файлов. — dangph 28 июля ’15 в 11:26
  • 21
    Еще более лаконично: ni example.txt — Ник Кокс, 21 декабря 2017 г., 1:03
  • 3
    Этот метод не добавляет ужасных байтов спецификации и кодировка, к счастью, выглядит как UTF-8. — Давос, 26 марта 2018, 10:33
  • 1
    Попробовал еще немного, чтобы избежать интерактивного диалога @NickCox: ni -i file foo.txt — enharmonic 27 марта 2020 г., 20:59
| показать 2 дополнительных комментария

Чтобы создать пустой файл:

   New-Item -ItemType file example.txt  

Чтобы обновить временную метку файла:

  (  gci example.txt) .LastWriteTime = Get-Date  

87

Вот версия, которая создает новый файл, если он не существует, или обновляет метку времени, если он существует.

  Функция Touch-File {  $ file = $ args [0] if ($ file -eq $ null) {throw "Имя файла не указано"} if (Test-Path $ file) {(Get-ChildItem $ file). LastWriteTime = Get-Date} else {echo $ null> $ file}}  

Улучшите этот ответ
ответил 25 марта ’13 в 12:47
  • 4
    Это правильный ответ для репликации сенсорной программы Unix (хотя и с другим именем), но вопрос ориентирован на простое создание нового файла. — Джейми Шембри, 04 янв., В 11:59
  • 17
    Очень, очень крошечная придирка: хотя Touch-File соответствует соглашению об именах глагол-существительное в PS, Touch не является «одобренным» глаголом (не то чтобы это существенное требование: msdn.microsoft.com/en-us/library/ms714428.aspx). Файл в порядке, кстати. Я рекомендую имена Set-File или Set-LastWriteTime или, как мне нравится, Update-File . Кроме того, я бы рекомендовал Add-Content $ file $ null вместо echo $ null> $ file . Наконец, установите псевдоним с помощью Set-Alias ​​touch Update-File , если вы хотите и дальше использовать команду touch — Алан МакБи, 25 мая ’17 в 23: 36
  • Предложите добавить это как последняя строка: New-Alias ​​-Name Touch Touch-File — stimpy77 01 окт.1919 в 4:33
  • Хорошо, но лучше использовать New-Item $ file вместо echo $ null> $ file , поскольку последний создаст 2-байтовый файл со спецификацией UTF-16LE в Windows PowerShell (но уже не в PowerShell Core). — mklement0 05 ноя. ’19 в 12:43
  • 1
    Это гонка TOCTTOU, файл может быть создан между проверкой и действием. — poizan42 27 дек. ’19 в 13:43
| показать 1 дополнительный комментарий

Вот версия, которая создает новый файл, если он не существует или обновляет метку времени, если она существует.

  Функция Touch-File {$ file = $ args [0] if ($ file -eq $ null) {throw "Имя файла не указано  "} if (Test-Path $ file) {(Get-ChildItem $ file) .LastWriteTime = Get-Date} else {echo $ null> $ file}}  

27

В PowerShell вы можете создать аналогичную функцию Touch как таковую:

  function touch {set-content -Path ($ args [0]) -Value ($ null)}  

Использование:

touch myfile. txt

Источник

Улучшите этот ответ
ответил 7 ноября ’12 в 19:32
  • Это здорово, спасибо! Как раз то, что хотел! Есть идеи, как я могу установить эту функцию в PowerShell, чтобы она загружалась автоматически при запуске оболочки? — jsalonen 7 нояб., В 19:34
  • 3
    Добавьте его в свой файл $ profile. (Запустите блокнот $ profile, чтобы отредактировать этот файл.) — Марк Аллен, 7 ноября 2012 г., 21:12
  • 29
    Это приведет к удалению содержимого файла, если он существует. — dangph 24 янв. ’13 в 18:31
  • 2
    Или безопасная версия, которая не очищает существующее содержимое файла function touch {if ((Test-Path -Path ($ args [0])) -eq $ false) {set- content -Path ($ args [0]) -Value ($ null)}} — alastairtree 11 сен 2018 в 16:51
  • … и последняя однострочная версия, которая также может обрабатывать каталоги: function touch {if ((Test-Path -Path ($ args [0])) -eq $ false) {Set-Content -Path ($ args [0]) -Value ($ null) } else {(Get-Item ($ args [0])). LastWriteTime = Get-Date}} — not2qubit 24 сен 2020, 8:05
добавить комментарий |

В PowerShell вы можете создать аналогичную функцию Touch как таковую:

  function touch  {set-content -Path ($ args [0]) -Value ($ null)}  

Использование:

коснитесь myfile.txt

Источник


22

Я предпочитаю Format-Table для этой задачи (нажатие мнемонического файла):

  ft> filename  

Для работы с непустыми файлами вы можете использовать:

  ft >> filename  

Я выбрал это, потому что это короткая команда, которая ничего не делает в этом контексте, anoop. Это также хорошо, потому что, если вы забудете перенаправление:

  ft filename  

вместо того, чтобы выдавать вам ошибку, снова просто ничего не делает. Некоторые другие псевдонимы, которые будут работать, — это Format-Custom ( fc ) и Format-Wide ( fw )..

Улучшите этот ответ
отредактировано 18 дек., 03:02
ответил 30 сен ’14 в 17:10
добавить комментарий |

Для этой задачи я предпочитаю Format-Table (мнемоническое касание файла):

   ft> filename  

Для работы с непустыми файлами вы можете использовать:

  ft >> filename  

Я выбрал это, потому что это короткая команда, которая ничего не делает в этом контексте, anoop. Это также хорошо, потому что, если вы забудете перенаправление:

  ft filename  

вместо того, чтобы выдавать вам ошибку, снова просто ничего не делает. Некоторые другие псевдонимы, которые будут работать, — это Format-Custom ( fc ) и Format-Wide ( fw ).


16

Уже есть куча достойных ответов, но мне очень нравится псевдоним New-Item что просто: ni

Вы также можете отказаться от объявления типа файла (которое, как я предполагаю, неявно при добавлении расширения), чтобы создать файл javascript с именем ‘x’ в моем текущий каталог я могу просто написать:

  ni x.js  

на 3 символа быстрее, чем прикосновение!

Улучшите этот ответ
ответ дан 15 июня ’17 в 16: : 45
  • 1
    Это не идемпотентный ni: файл 'x.js' уже существует — Стивен Пенни, 30 ноября ’17 в 12:43
  • An Идемпотентным эквивалентом будет ac x.js $ null — Ник Кокс, 29 марта 2020 г., 5:02
  • чем это отличается от прикосновения? — Николас Сондерс 20 дек. ’20 в 18:45
добавить комментарий |

Уже есть куча достойных ответов, но мне очень нравится псевдоним New-Item, который просто: ni

Вы также можете отказаться от объявления типа файла (которое, как я предполагаю, неявно при добавлении расширения), поэтому для создания файла javascript с именем ‘x’ в моем текущем каталоге я могу просто написать:

  ni x. js  

на 3 символа быстрее, чем прикосновение!


9

Я собрал различные источники и получил следующее, которое удовлетворило мои потребности. Мне нужно было установить дату записи библиотеки DLL, которая была построена на машине в другом часовом поясе:

  $ update = get-dateSet-ItemProperty -Path $ dllPath -Name LastWriteTime  -Value $ update  

Конечно, вы также можете установить его для нескольких файлов:

  Get-ChildItem * .dll |  Set-ItemProperty -Name LastWriteTime -Value $ update  

Улучшите этот ответ
отредактировано 25 февраля ’13 в 15:52
ответил 26 января 2013 в 0:33
  • 1
    +1 для наиболее подходящего для Powershell способа изменить LastWriteTime в файле (это то, что мне нужно), хотя вопрос был сосредоточен на новой функции создания файлов сенсорной команды. — Натан Хартли, 25 февраля 2013, 15:20
  • Без использования переменной? — riahc3 28 июл. ’15 в 06:33
добавить комментарий |

Я собрал воедино различные источники и получил следующие, которые удовлетворили мои потребности. Мне нужно было установить дату записи библиотеки DLL, которая была построена на машине в другом часовом поясе:

  $ update = get-dateSet-ItemProperty -Path $ dllPath -Name LastWriteTime  -Value $ update  

Конечно, вы также можете установить его для нескольких файлов:

  Get-ChildItem * .dll |  Set-ItemProperty -Name LastWriteTime -Value $ update  

7

Похоже, что некоторые ответы здесь не учитывают кодировку файлов.

Я только что столкнулся с этой проблемой по другим причинам, но

  echo $ null> $ file $ null> $ file  

оба создают файл UTF-16-LE, а

  New-Item $ file -type file  

создает файл UTF-8.

По любой причине fc> $ file и fc >> $ file , похоже, также создают файлы UTF-8.

  Out-File $ file -encoding utf8  

дает вам файл UTF-8-BOM, а

  Out-File  $ file -encoding ascii  

дает вам файл UTF-8. Другие допустимые (но непроверенные) кодировки, которые поддерживает Out-File: [[-Encoding] {unknown | строка | юникод | bigendianunicode | utf8 | utf7 | utf32 | ascii | по умолчанию | oem}]. Вы также можете передать материал в Out-File, чтобы предоставить файлу некоторые текстовые данные для хранения, а также флаг -append. Например:

  echo $ null |  Out-File.  Stuff.txt -Encoding ascii -Append  

в этом примере по какой-то причине не обновляется метка времени, а в этом:

  echo foo |  Out-File.  Stuff.txt -Encoding ascii -Append  

Хотя у этого есть побочный эффект добавления «foo» в конец файла.

Если вы не уверены, какая у вас кодировка, я обнаружил, что VS-Code имеет отличную функцию, где в правом нижнем углу указано, какая кодировка. Я думаю, что в Notepad ++ есть аналогичная функция.

Улучшите этот ответ
ответил 08 марта ’17 в 23:30
  • Set-Content -Path $ file -value $ null выполняет задание и не влияет на кодировку файла. Также проверьте версию ss64 для touch . — Антон Круглов, 14 марта ’17 в 15:18
  • Да, в Windows PowerShell $ null> $ file , к сожалению, создается 2-байтовый файл с кодировкой UTF-16LE; К счастью, теперь в PowerShell Core вы получаете действительно пустой файл, как и в случае с New-Item в обеих редакциях. Однако не имеет смысла говорить о действительно пустом файле (длиной 0 байт) как о конкретной кодировке символов, такой как UTF-8. Кодировка символов имеет смысл только в отношении содержимого (которое здесь отсутствует) и, более конкретно, в отношении содержимого text . — mklement0 05 ноя. ’19 в 13:04
добавить комментарий |

Похоже, многие ответы здесь не учитывают кодировку файлов.

Я просто столкнулся с этой проблемой по другим причинам, но

  echo $ null> $ file $ null> $ file  

оба создает файл UTF-16-LE, а

  New-Item $ file -type file  

создает UTF-8 файл.

По какой-то причине fc> $ file и fc >> $ file , похоже, также создают UTF-8 файлы.

  Out-File $ file -encoding utf8  

дает вам файл UTF-8-BOM, а

  Out-File $ file -encoding ascii  

дает вам файл UTF-8. Другие допустимые (но непроверенные) кодировки, которые поддерживает Out-File: [[-Encoding] {unknown | строка | юникод | bigendianunicode | utf8 | utf7 | utf32 | ascii | по умолчанию | oem}]. Вы также можете передать материал в Out-File, чтобы предоставить файлу некоторые текстовые данные для хранения, а также флаг -append. Например:

  echo $ null |  Out-File.  Stuff.txt -Encoding ascii -Append  

в этом примере по какой-то причине не обновляется метка времени, а в этом:

  echo foo |  Out-File.  Stuff.txt -Encoding ascii -Append  

Хотя у этого есть побочный эффект добавления «foo» в конец файла.

Если вы не уверены, какая у вас кодировка, я обнаружил, что VS-Code имеет отличную функцию, где в правом нижнем углу указано, какая кодировка. Я думаю, что в Notepad ++ есть аналогичная функция.


6
  ac file.txt $ null  

Не удаляет содержимое файла, но и дату не обновляет.

Улучшить этот ответ
ответил 12 авг. 52
добавить комментарий |

  ac file.txt $ null  

Не удалять содержимое файла, но дата тоже не обновляется.


5

Откройте файл своего профиля:

  notepad $ profile  

Добавьте следующую строку:

  function touch {New-Item "$ args" -ItemType File}  

Сохраните его и перезагрузите свой $ profile, чтобы использовать его прямо прочь. (Нет необходимости закрывать и открывать PowerShell)

 .  $ profile  

Чтобы добавить новый файл в текущий тип каталога:

  коснитесь testfile.txt  

Чтобы добавить новый файл в тип каталога ‘myfolder’:

  коснитесь myfolder  testfile.txt  

Если файл с таким именем уже существует, он не будет перекрыт. Вместо этого вы получите сообщение об ошибке.

Надеюсь, это поможет

Бонусный совет:

Вы можете сделать эквивалент ‘mkdir’, добавив следующую строку:

  function mkdir {New-Item "$ args" -ItemType Directory}  

То же использование:

  mkdir testfoldermkdir testfolder  testsubfolder  

Улучшите этот ответ
ответил 08 марта 2013 в 12:47
добавить комментарий |

Откройте файл вашего профиля:

  notepad $ profile  

Добавьте следующую строку:

  function touch {New-Item "$ args" -  ItemType File}  

Сохраните его и перезагрузите свой $ profile, чтобы сразу использовать его. (Нет необходимости закрывать и открывать powershell)

 . $ profile  

Чтобы добавить новый файл в текущий тип каталога:

  коснитесь testfile.txt  

Чтобы добавить новый файл в тип каталога ‘myfolder’:

  коснитесь myfolder  testfile.txt  

Если файл с таким именем уже существует, он не будет перекрыт. Вместо этого вы получите сообщение об ошибке.

Надеюсь, это поможет

Бонусный совет:

Вы можете сделать эквивалент ‘mkdir’, добавив следующую строку:

  function mkdir {New-Item "$ args" -ItemType Direc  tory}  

То же использование:

  mkdir testfoldermkdir testfolder  testsubfolder  

3

Для описанного вами сценария (когда файл не существует) это быстро и легко:

  PS> sc example.txt $ null  

Однако другое распространенное использование touch — обновить временную метку файла. Если вы попытаетесь использовать мой пример sc таким образом, он сотрет содержимое файла.

Улучшите этот ответ
ответил 25 февраля ’13 в 22:19
  • 2
    Спасибо! Что означает sc ? Изменить: выяснил («Установить содержимое») — jsalonen 27 февраля 2013 г. в 15:00
добавить комментарий |

Для описанного вами сценария (когда файл не существует) это быстро и легко:

  PS> sc example.txt $ null  

Однако touch также часто используется для обновления файла отметка времени. Если вы попытаетесь использовать мой пример sc таким образом, он сотрет содержимое файла.


3

Я использовал имя «Write-File», потому что «Touch» не является утвержденным глаголом PowerShell. Однако я по-прежнему называю это касанием.

Touch.psm1

   Функция Write-File {[CmdletBinding ()] Param ([Parameter (Mandatory = $ True, Position = 1)] [string] $ Path, [switch] $ WhatIf  , [System.Management.Automation.PSCredential] $ Credential) $ UseVerbose = $ PSCmdlet.MyInvocation.BoundParameters ['Verbose']. IsPresent -eq $ True $ UseDebug = $ PSCmdlet.MyInvocation.BoundParameters ['DebugresentParameters] [.  eq $ True $ TimeStamp = Get-Date If (-Not [System.Management.Automation.WildcardPattern] :: ContainsWildcardCharacters ($ Path)) {New-Item -ItemType: File -Verbose: $ UseVerbose -Debug: $ UseDebug -WhatIf  : $ WhatIf -Credential $ Credential -Path $ Path -ErrorAction SilentlyContinue -Confirm: $ False |  Out-Null} Set-ItemProperty -Verbose: $ UseVerbose -Debug: $ UseDebug -WhatIf: $ WhatIf -Credential $ Credential -Path $ Path -Name LastWriteTime -Value: $ TimeStamp -Confirm: $ False |  Out-Null} Set-Alias ​​-Name touch -Value Write-FileExport-ModuleMember -Function Write-FileExport-ModuleMember -Alias ​​touch  

Использование:

  Import-Module ./Touch.psm1touch foo.txt  

Поддерживает:

  • Пути в других каталогах
  • Credential для сетевых путей
  • Verbose , Debug и WhatIf flags
  • подстановочные знаки (только обновление метки времени)
Улучшить этот ответ
отредактировал 23 марта ’17 в 1:32
ответил 22 марта ‘ 17, 17:21
  • 1
    Новый элемент команда была предложена в четырех предыдущих ответах. Вы предоставили для него 20-строчную оболочку. Можете ли вы более четко объяснить, какое преимущество имеет ваше решение по сравнению с предыдущими? Например, что это за флаги Verbose , Debug и WhatIf и т. Д.? — Скотт 23 марта ’17, в 16: 08
  • 1
    Одно из важных различий между этим ответом и New-Item заключается в том, что он обновляет временную метку существующих файлов. — jpaugh 26 июля ’18 в 15:49
  • По какой-то причине я должен всегда импортировать модуль снова и снова, этого не должно происходить, верно Import-Module ./Touch.psm1 — shirish 4 ноября ’19 в 21:15
  • 1
    @shirish Вам необходимо импортировать модули каждый сеанс , да, если вы не поместите его в папку в PSModulePath. (Или добавьте его папку в PSModulePath. ) — SilverbackNet 28 фев ’20 в 20:36
добавить комментарий |

Я использовал имя «Write-File», потому что «Touch» не является утвержденным глаголом PowerShell. Однако я по-прежнему называю это касанием.

Touch.psm1

   Функция Write-File {[CmdletBinding ()] Param ([Parameter (Mandatory = $ True, Position = 1)] [string] $ Path, [switch] $  WhatIf, [System.Management.Automation.PSCredential] $ Credential) $ UseVerbose = $ PSCmdlet.MyInvocation.BoundParameters ['Verbose']. IsPresent -eq $ True $ UseDebug = $ PSCmdlet.MyInvocation.BoundParameters [. '  -eq $ True $ TimeStamp = Get-Date If (-Not [System.Management.Automation.WildcardPattern] :: ContainsWildcardCharacters ($ Path)) {New-Item -ItemType: File -Verbose: $ UseVerbose -Debug: $ UseDebug -  WhatIf: $ WhatIf -Credential $ Credential -Path $ Path -ErrorAction SilentlyContinue -Confirm: $ False |  Out-Null} Set-ItemProperty -Verbose: $ UseVerbose -Debug: $ UseDebug -WhatIf: $ WhatIf -Credential $ Credential -Path $ Path -Name LastWriteTime -Value: $ TimeStamp -Confirm: $ False |  Out-Null} Set-Alias ​​-Name touch -Value Write-FileExport-ModuleMember -Function Write-FileExport-ModuleMember -Alias ​​touch  

Использование:

  Import-Module ./Touch.psm1touch foo.txt  

Поддерживает:

  • Пути в других каталогах
  • Учетные данные для сетевых путей
  • Подробный , Отладка и WhatIf flags
  • подстановочные знаки (только для обновления метки времени)

2

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

  fsutil file createnew file.name 0  

Ноль — это размер файла в байтах, поэтому это также полезно для создания большого файла (они не будут полезны для тестирования сжатие, поскольку они не содержат фактических данных и практически ничего не сжимают)

Улучшите этот ответ
ответил 02 ноября 2015 в 14:58
добавить комментарий |

для создания пустого файла в Windows наиболее быстрый способ выглядит следующим образом:

  fsutil file createnew file. name 0  

Ноль — это размер файла в байтах, поэтому это также полезно для создания большого файла (они не будут полезны для тестирования сжатия, поскольку они не содержат фактических данных и будут сжимать почти до нуля)


2

веб-страница http://xahlee.info/powershell/PowerShell_for_unixer.html предлагает:

  файл типа нового элемента [имя файла]  

, и это действительно создает новый файл нулевого размера.

Это не выполняет другую функцию Unix touch , а именно обновляет метку времени, если filename уже существует, но вопрос подразумевает, что пользователь просто хочет создать файл нулевого размера в интерактивном режиме, не прибегая к помощи Блокнота.

Улучшить этот ответ
отредактировано 6 мая 2016 года в 06:36
ответил 6 мая ’16 в 18:21
добавить комментарий |

Веб-страница http://xahlee.info/powershell/PowerShell_for_unixer.html предлагает:

  new-item -type file [filename]  

, и это действительно создает новый файл нулевого размера.

Это не выполнить другую функцию Unix touch , а именно обновить метку времени, если filename уже существует, но вопрос подразумевает, что пользователь просто хочет создать нулевой размер файла в интерактивном режиме без использования Блокнота.

Оцените статью
logicle.ru
Добавить комментарий