Em uma máquina Windows, recebo este erro
'touch' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.
quando sigo as instruções para fazer:
touch index.html app.js style.css
Existe um equivalente do Windows ao uso do 'toque'? Preciso criar esses arquivos manualmente (e modificá-los para alterar o carimbo de data / hora) para implementar esse tipo de comando? Isso não parece muito ... nó-ish ...
touch
. Outra discussão aqui: superuser.com/questions/10426/… e a biblioteca Cygwin é um conjunto de ferramentas comum dos comandos do Unix no Windows.touch
para criar um arquivo vazio com o PowerShell?Respostas:
no tipo de janela cmd:
Isso criará 0 bytes no arquivo your_file.txt.
Outra maneira de fazer isso é usando o comando echo :
eco. - criará um arquivo com uma linha vazia.
Editado em 01/04/2019:
Se você precisar preservar o conteúdo do arquivo, use >> em vez de>
Exemplo
Editado em 2020-04-07
Você também pode usar o comando de chamada .
Exemplo:
fonte
access denied
no console. A segunda opção funciona muito bem!>>
do primeiro não fará nada, o segundo adiciona uma linha no final do arquivo. A resposta correta é superuser.com/questions/10426/…O Windows não inclui nativamente um
touch
comando.Você pode usar qualquer uma das versões públicas disponíveis ou sua própria versão. Salve esse código como
touch.cmd
e coloque-o em algum lugar no seu caminhoEle iterará na lista de argumentos e, para cada elemento, se houver, atualize o registro de data e hora do arquivo; caso contrário, crie-o.
fonte
Você pode usar este comando: ECHO >> filename.txt
ele criará um arquivo com a extensão especificada na pasta atual.
ATUALIZAR:
para um arquivo vazio, use: copy NUL filename.txt
fonte
type NUL > filename
(cria um arquivo de 0 bytes)type NUL >> filename
A resposta está errada, só funciona quando o arquivo não existe. Se o arquivo existir, o uso do primeiro não fará nada, o segundo adiciona uma linha no final do arquivo.
A resposta correta é:
Encontrei-o aqui: /superuser/10426/windows-equivalent-of-the-linux-command-touch/764721#764721
fonte
Estou surpreso com quantas respostas aqui estão erradas . Fazer eco de nada em um arquivo preencherá o arquivo com algo parecido
ECHO is ON
, e tentar ecoar$nul
em um arquivo será literalmente$nul
inserido no arquivo. Além disso, para o PowerShell, o eco$null
em um arquivo não produz um arquivo de 0kb, mas algo codificado comoUCS-2 LE BOM
, que pode ficar confuso se você precisar garantir que seus arquivos não tenham uma marca de ordem de bytes.Depois de testar todas as respostas aqui e referenciar algumas semelhantes, posso garantir que elas funcionem por shell do console. Apenas mude
FileName.FileExtension
para o caminho completo ou relativo do arquivo que você desejatouch
; obrigado a Keith Russell pelaCOPY NUL FILE.EXT
atualização:Atualizações do CMD com registro de data e hora
copy NUL FileName.FileExtension
Isso criará um novo arquivo com o nome que você colocou em vez de
FileName.FileExtension
com um tamanho de 0 bytes. Se o arquivo já existir, ele basicamente se copiará no local para atualizar o registro de data e hora. Eu diria que isso é mais uma solução alternativa do que a funcionalidade 1: 1,touch
mas não conheço nenhuma ferramenta interna para o CMD que possa atualizar a data e hora de um arquivo sem alterar qualquer outro conteúdo.CMD sem atualizações de carimbo de data / hora
if not exist FileName.FileExtension copy NUL FileName.FileExtension
Atualizações do PowerShell com registro de data e hora
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}
Sim, funcionará no console como uma linha; nenhum requisito para colocá-lo em um arquivo de script do PowerShell.
PowerShell sem atualizações de carimbo de data / hora
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}
fonte
fsutil file CreateNew FileName.FileExtension 0
porcopy NUL Filename.FileExtension
, já que o último é mais curto e faz a mesma coisa.copy
mais,fsutil
mas já faz um tempo ... Eu tenho certeza que foi assim que eu aprendi sobrefsutil
haha! Vou tentar descobrir o porquê ...Use o seguinte comando na sua linha de comandos:
As informações de parâmetros conforme a seguir:
fsutil - Utilitário do sistema de arquivos (o executável que você está executando)
file - aciona uma ação de arquivo
createnew - a ação a ser executada (crie um novo arquivo)
filename - seria literalmente o nome do arquivo
requiredSize - alocaria um tamanho de arquivo em bytes no arquivo criado
fonte
NULL
s ... esquisitas ... então, use 0 ... gera um erro se você pular a requiredSize .. .No Windows Power Shell, você pode usar o seguinte comando:
ou
fonte
'New-Item' is not recognized as an internal or external command
Você pode replicar a funcionalidade do touch com o seguinte comando:
O que isso faz é tentar executar um programa chamado
$
, mas se$
não existir (ou não for um executável que produza saída), nenhuma saída será produzida por ele. É essencialmente um hack na funcionalidade, mas você receberá a seguinte mensagem de erro:Se você não quiser a mensagem de erro, poderá fazer uma de duas coisas:
Ou:
o
type
comando tenta exibir o conteúdo de nul, que nada faz, mas retorna um EOF (final do arquivo) quando lido.2>nul
envia a saída de erro (saída 2) para nul (que ignora todas as entradas quando gravadas em). Obviamente, o segundo comando (com2>nul
) é redundante pelotype
comando, pois é mais rápido digitar. Mas pelo menos agora você tem a opção e o conhecimento.fonte
%ERRORLEVEL%
como diferente de zero. Você pode corrigir esse problema anexando um noop|| cd.
, mas isso sempre define o erro como 0, que pode não ser o que você deseja se o "toque" falhar.Nenhum comando -
type
nemecho
- é necessário para emular o comando 'touch' do Unix / Mac OS X em um terminal do Windows Powershell. Basta usar a seguinte abreviação:Isso criará um arquivo vazio chamado 'filename' no seu local atual. Use qualquer extensão de nome de arquivo que você possa precisar, por exemplo, '.txt'.
Fonte: /superuser/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell (consulte os comentários)
fonte
echo
$null > filename
envia essa saída vazia para o nome do arquivo (se você perceber meu desvio).echo
No terminal da linha de comando padrão (cmd) você precisaecho
. Desculpe pela confusão.Você também pode usar copy con [filename] em uma janela de comando do Windows (cmd.exe):
Isso criará um arquivo nomeado
yourfile.txt
no diretório local.fonte
como mencionado
pode ser qualquer arquivo, com qualquer extensão, então faça
isso abrirá seu arquivo no editor de bloco de notas
fonte
Eu uso
cmder
(um emulador de linha de comando)Ele permite que você execute todos os comandos do Linux dentro de uma máquina Windows.
Pode ser baixado em https://cmder.net/
Eu realmente gosto
fonte
Supondo que o arquivo exista e você só precisa atualizar o carimbo de data / hora.
fonte
No terminal do Visual Code Studio no Windows 10, foi o que funcionou para criar um novo arquivo:
fonte
Se você tem o Cygwin instalado no seu PC, você pode simplesmente usar o executável fornecido para o touch (também via prompt de comando do Windows):
fonte
Fácil, exemplo com arquivo txt
fonte
$null
ao arquivo.Sim, você pode usar o Node for Touch, eu apenas uso isso e está funcionando bem no Windows Cmd ou gitbash
fonte
[cmd]
e implica que o OP deseja uma resposta pronta para o CMD, o que significa que não há utilitários de linha de comando que não sejam fornecidos com uma instalação padrão do Windows. Isso excluirá praticamente todas as linguagens de script, mesmo as linguagens de script internas do Windows, como CScript, WScript e PowerShell. O ponto não é que ele funcione no ambiente do CMD, mas que seja possível para qualquer pessoa com acesso ao CMD, sem incluir problemas de permissão.