Equivalente ao Linux `toque` para criar um arquivo vazio com o PowerShell? [duplicado] | shelleyness.com
Questão Equivalente ao Linux `toque` para criar um arquivo vazio com o PowerShell? [duplicado]
Equivalente do Windows do comando do Linux 'touch'? 30 respostas
No PowerShell existe um equivalente de touch?
Por exemplo, no Linux, posso criar um novo arquivo vazio invocando:
No Windows isso é bem complicado - normalmente eu apenas abro uma nova instância do notepad e salvo um arquivo vazio.
Existe uma maneira programática no PowerShell de fazer isso?
Eu não estou olhando para combinar exatamente o comportamento do toque, mas apenas para encontrar o equivalente mais simples possível para a criação de arquivos vazios.
Vejo Versão do Windows do comando Unix touch E Equivalente do Windows do comando do Linux 'touch'? - amiregelz
Obrigado. Eu olhei para eles, mas a maioria da resposta se concentra no prompt de comando. Eu gostaria de ter uma solução PowerShell que não requer que eu instale novos aplicativos. - jsalonen
Downvoted a questão - ambos os recursos são apenas mais algumas linhas de código, basta implementar ambos, não apenas metade, esp. quando o outro meio ausente é tão perigoso. - yzorg
@yzorg: O que você quer dizer com os dois recursos? Eu só estava perguntando como criar um arquivo vazio no PS da maneira que você pode fazer com touch no Linux. - jsalonen
@jsalonen Use * nix touch em um arquivo existente, ele atualizará o último horário de gravação sem modificar o arquivo, consulte os links de @amiregelz. Esta questão tem uma alta classificação no google para powershell touch, Eu queria alertar os copiadores / copiadores que apenas essa metade pode destruir dados, quando o * nix touch não. Veja @LittleBoyLost resposta que manipula quando o arquivo já existe. - yzorg
Usando o redirecionador de acréscimo ">>" resolve o problema em que um arquivo existente é excluído:
Também conhecido como 'echo null> filename' em um prompt de comando, possivelmente um arquivo em lote. Legal para ver a versão do PowerShell, obrigado! - Mark Allen
toque é bastante diferente do que isso se o arquivo já existe - jk.
o eco é desnecessário $null > filename funciona bem. - alirobe
Isso grava 2 bytes de unicode BOM 0xFEFF para mim. - mlt
Nota importante: Muitas ferramentas unix não lidam com a BOM. Isso inclui git por exemplo (mesmo no windows). Você terá problemas se usar arquivos criados dessa maneira com ferramentas que não reconhecem BOMs. por exemplo. você tenta criar seu .gitignore usando este comando e me pergunto por que não vai funcionar. BOM é o motivo. - martixy
Aqui está uma versão que cria um novo arquivo se ele não existir ou atualiza o timestamp se ele existir.
Esta é a resposta correta para replicar o programa de toque Unix (embora com um nome diferente), mas a questão é orientada para simplesmente criar um novo arquivo. - Jamie Schembri
Muito, muito tiny quibble: Enquanto o Touch-File está em conformidade com a convenção de nomenclatura Verb-Noun do PS, Touch não é um verbo "aprovado" (não que seja um requisito significativo: msdn.microsoft.com/pt-br/library/ms714428.aspx). File está bem, btw. Eu recomendo os nomes Set-File ou Set-LastWriteTime ou meu favorito Update-File. Além disso, eu recomendaria Add-Content $file $null ao invés de echo $null > $file. Por fim, defina um alias com Set-Alias touch Update-File se você quiser continuar usando o comando touch - Alan McBee
Para criar um arquivo em branco:
Para atualizar o registro de data e hora de um arquivo:
Eu acho que essa é a melhor abordagem! - Jayesh Bhoot
Isso funciona para atualizar o registro de data e hora de uma pasta? - riahc3
@ riahc3, use isto: (gi MyFolder).LastWriteTime = Get-Date . Você poderia usar isso para arquivos também. - dangph
Ainda mais enérgico: ni example.txt - Nick Cox
Este método não adiciona os terríveis bytes de BOM e a codificação parece felizmente ser UTF-8. - Davos
No PowerShell, você pode criar uma função semelhante do Touch como tal:
Isso é ótimo, obrigado! Apenas o que eu queria! Alguma idéia de como eu poderia instalar essa função no PowerShell para que ele seja carregado automaticamente quando eu iniciar o shell? - jsalonen
Adicione ao seu arquivo $ profile. (Execute o perfil do $ notepad para editar esse arquivo.) - Mark Allen
Isso excluirá o conteúdo do arquivo, se existir. - dangph
para esta tarefa. Para trabalhar com arquivos não vazios, você pode usar
fc é simplesmente um alias para Formato personalizado. Eu escolhi porque é um comando curto que não faz nada neste contexto, um noop. Também é bom porque se você esquecer o redirecionar
em vez de lhe dar um erro, novamente ele não faz nada. Alguns outros aliases que vai funcionar são
Reuni várias fontes e terminei com o seguinte, que atendia às minhas necessidades. Eu precisava definir a data de gravação de uma DLL que foi criada em uma máquina em um fuso horário diferente:
Claro, você também pode configurá-lo para vários arquivos:
+1 para o modo mais poderoso de alterar LastWriteTime em um arquivo (que é o que eu precisava), embora a questão se concentrasse no novo recurso de criação de arquivo do comando touch. - Nathan Hartley
Sem usar uma variável? - riahc3
Há um monte de respostas dignas, mas eu gosto do apelido de New-Item, que é apenas: ni
Você também pode renunciar a declaração de tipo de arquivo (que eu assumo é implícito quando uma extensão é adicionada), então para criar um arquivo javascript com o nome de 'x' no meu diretório atual eu posso simplesmente escrever:
3 caracteres mais rápido do que toque!
Isso não é idempotente ni : The file 'x.js' already exists - Steven Penny
Abra o seu arquivo de perfil:
Salve e recarregue seu perfil $ para usá-lo imediatamente. (Não há necessidade de fechar e abrir o powershell)
Para adicionar um novo arquivo no tipo de diretório atual:
Para adicionar um novo arquivo dentro do diretório 'myfolder':
Se um arquivo com o mesmo nome já existir, ele não será substituído. Em vez disso, você receberá um erro.
Você pode fazer o equivalente a 'mkdir' adicionando a seguinte linha:
O mesmo uso:
Como faço para instalar o plugin LargeFile para o gVim? Encontre e substitua caracteres especiais Os desktops all-in-one podem ser bons desenvolvedores? Caixas de seleção do Planilhas Google não renderizadas corretamente no celular Autoclamação de citações simples do Textmate Como manter o menu Alt-Tab no segundo monitor no Ubuntu? WannaCrypt - Falha na instalação do Patch XP localizado