microsoft - Como criar um arquivo vazio na linha de comando no Windows?



display files cmd (20)

Como criar um arquivo vazio na linha de comando do DOS / Windows?

Eu tentei:

copy nul > file.txt

mas sempre mostra que um arquivo foi copiado.

Existe algum outro método no cmd padrão?

Deve ser um método que não requer o comando touch do Cygwin ou qualquer outro comando não padrão. O comando precisa ser executado a partir de um script, portanto, os pressionamentos de tecla não podem ser usados.


Ainda outro caminho:

copy nul 2>empty_file.txt

Ainda outro método que cria um arquivo de byte zero:

break > "file.txt"

Aqui está outro modo:

rem/ > file.ext

A barra / é obrigatória; sem ele a parte de redirecionamento foi comentada por rem .


Eu li muitos tópicos, mas não é o caminho mais curto.

Por favor use o comando:

>copy /b NUL empty_file.txt


Hoje eu descobri um novo :)

Isso irá alterar o título da janela de linha de comando, mas também criará um arquivo vazio.

title > file.txt

Isso funcionou para mim

echo > file.extension

Aqui está outra maneira que encontrei hoje, tenho ideias de outras respostas, mas funcionou

sometext > filename.extension

Por exemplo.

xyz > emptyfile.txt  //this would create an empty zero byte text file
abc > filename.mp4   //this would create an zero byte MP4 video media file

Isso mostraria uma mensagem de erro no prompt de comando que,

xyz não é como um comando interno ou externo, um programa operável ou um arquivo de lote.

Mas a coisa estranha que encontrei foi que o arquivo está sendo criado no diretório, mesmo que o comando não seja um comando padrão do Windows.


Primeiro crie seu arquivo para que ele exista:

echo . > myfile.txt

Em seguida, sobrescreva o arquivo criado com uma versão vazia usando o comando copy :

copy /y nul myfile.txt

Se você realmente quer um arquivo totalmente vazio, sem qualquer saída para stdout, você pode trapacear um pouco:

copy nul file.txt > nul

Apenas redirecione stdout para nul e a saída da cópia desaparece.


Tente isto:

type NUL > 1.txt

Isso definitivamente criará um arquivo vazio.


Tente isto: abc > myFile.txt Primeiro, ele criará um arquivo com o nome myFile.txt no diretório de trabalho atual (no prompt de comando). Em seguida, ele executará o comando abc que não é um comando válido. Dessa forma, você obteve um novo arquivo vazio com o nome myFile.txt .


Você pode escrever seu próprio toque.

//touch.cpp
#include <fstream>
#include <iostream>

int main(int argc, char ** argv;)
{
  if(argc !=2)
  {
    std::cerr << "Must supply a filename as argument" << endl;
    return 1;
  }
  std::ofstream foo(argv[1]);
  foo.close();
  return 0;
}

Você pode usar o comando antigo

copy con file_name.ext

não digite nada, apenas pressione F6 para salvá-lo, porém ele irá imprimir "Arquivo copiado", mas quando você abrir o arquivo, ele estará vazio


copiar con SomeFile.txt Enter

Ctrl-Z Entrar


então você pode criar um arquivo vazio com

'' > newfile.txt

navegue até o diretório e digite o comando acima na janela do PowerShell.

Observe que isso não funcionará no prompt de comando do Windows.


Sem redirecionamento, Luc Vu ou Erik Konstantopoulos point para:

copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt

" Como criar um arquivo de texto vazio de um arquivo de lote? " (2008) também aponta para:

type NUL > EmptyFile.txt
# also
echo. 2>EmptyFile.txt
copy nul file.txt > nul # also in qid's answer below
REM. > empty.file
fsutil file createnew file.cmd 0 # to create a file on a mapped drive

Nomad menciona um original :

C:\Users\VonC\prog\tests>aaaa > empty_file
'aaaa' is not recognized as an internal or external command, operable program or batch file.

C:\Users\VonC\prog\tests>dir

 Folder C:\Users\VonC\prog\tests

27/11/2013  10:40    <REP>          .
27/11/2013  10:40    <REP>          ..
27/11/2013  10:40                 0 empty_file

No mesmo espírito, Samuel sugere nos comentários :

o mais curto que uso é basicamente o de Nomad:

.>out.txt

Isso dá um erro:

'.' is not recognized as an internal or external command

Mas esse erro está no stderr. E > redireciona apenas stdout, onde nada foi produzido.
Daí a criação de um arquivo vazio . A mensagem de erro pode ser desconsiderada aqui.

(Resposta original, novembro de 2009)

echo.>filename

( echo "" realmente colocaria "" no arquivo! E echo sem o '.' colocaria " Command ECHO activated " no arquivo ...)

Nota: o arquivo resultante não está vazio, mas inclui uma seqüência de linha de retorno: 2 bytes.

Esta discussion aponta para uma verdadeira solução em lote para um arquivo real vazio :

 <nul (set/p z=) >filename

 dir filename
 11/09/2009  19:45                 0 filename
 1 file(s)                         0 bytes

O " <nul " canaliza uma resposta nul para o comando set/p , o que fará com que a variável usada permaneça inalterada. Como de costume com set/p , a string à direita do sinal de igual é exibida como um prompt sem CRLF.

Como aqui a "string à direita do sinal de igual" está vazia ... o resultado é um arquivo vazio.

A diferença com o cd. > filename cd. > filename (que é mencionado na resposta de Patrick Cuff e também produz um arquivo de 0 bytes) é que esse "bit de redirecionamento" (o truque <nul... ) pode ser usado para fazer o eco das linhas sem qualquer CR :

<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt

O comando dir deve indicar o tamanho do arquivo como 12 bytes: " hello world! ".


Abrir arquivo :

type file.txt

Novo arquivo :

Way 1 : type nul > file.txt
Way 2 : echo This is a sample text file > sample.txt
Way 3 : notepad myfile.txt <press enter>

Editar conteúdo:

notepad file.txt

cópia de

copy file1.txt file1Copy.txt

Renomear

rename file1.txt file1_rename.txt

Excluir arquivo:

del file.txt

No Windows eu tentei fazer isso

echo off > fff1.txt

e criou um arquivo chamado fff1.txt com tamanho de arquivo de 0kb

Eu não encontrei nenhum comando além deste que poderia criar um arquivo vazio.

Nota: Você tem que estar no diretório que você deseja criar o arquivo.


call>file.txt

esta é a maneira mais limpa que eu conheço.


echo "" > filename

Acredito que isso funcione no Windows / DOS, mas minha última experiência prática com um ou outro já foi há um bom tempo. Eu sei que funciona basicamente em qualquer sistema operacional compatível com POSIX .


echo.|set /p=>file

echo. suprimir o "Comando ECHO ativado"

|set /p= previne nova linha (e o arquivo agora é 0 byte)





command-line