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

494

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 de toque do Cygwin ou qualquer outro comando não padrão. O comando precisa ser executado a partir de um script para que as teclas não possam ser usadas.

Grendler
fonte
Acabei de encontrar um comando em lote verdadeiro, resultando em um arquivo vazio (0 byte): Atualizei minha resposta.
VonC 9/11/2009
3
Duplicar: stackoverflow.com/questions/210201 , "Como criar um arquivo de texto vazio a partir de um arquivo em lotes?". (Mas, IMHO, as respostas são melhores aqui.)
Peter Mortensen
Sim, o comando copy nul> file.txt é criado com o texto "1 arquivo (s) copiado". O arquivo vazio não é criado.
Ripon Al Wasim
5
Isso para mim apenas prova que o MS-DOS é um lixo se você não pode criar um arquivo vazio simples com um comando.
Kolob Canyon
2
@KolobCanyon: você pode, é claro, pelas respostas já postadas. Mas você realmente acha que a capacidade de criar rapidamente um arquivo vazio deve ser uma prioridade para um sistema operacional destinado aos usuários finais e que precisa executar em 16K de RAM? Afinal, não é uma coisa particularmente útil, exceto em alguns casos raros.
Harry Johnston

Respostas:

571

Sem redirecionamento, Luc Vu ou Erik Konstantopoulos apontar para fora para:

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

" Como criar um arquivo de texto vazio a partir de um arquivo em lotes? " (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 menor que eu 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 >apenas redireciona o 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 ""na verdade colocaria "" no arquivo! E echosem o '.' colocaria " Command ECHO activated" no arquivo ...)

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


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

 <nul (set/p z=) >filename

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

O " <nul" canaliza uma nulresposta ao set/pcomando, o que fará com que a variável usada permaneça inalterada. Como sempre set/p, a sequência à 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 cd. > filename(mencionada na resposta de Patrick Cuff e também produz um arquivo com 0 bytes) é que esse "pequeno redirecionamento" (o <nul...truque) pode ser usado para ecoar linhas sem nenhum CR :

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

O dircomando deve indicar o tamanho do arquivo como 11 bytes: " helloworld!".

VonC
fonte
2
você realmente deseja, echo.>filenameporque incluirá o espaço e o caractere de nova linha.
Agent_9191 9/11/2009
1
O uso do remcomando evita a criação de um arquivo com uma linha vazia.
Greg Hewgill 9/11/2009
@ Agent_9191: verdade, atualizei minha resposta. @ Greg: não sei o que dizer: rem>filenameproduz o mesmo resultado (2 bytes)
VonC
3
Noufal Ibrahim: não deixe isso te enganar; basta ver a próxima resposta, que tem uma solução muito mais fácil e igualmente funcional. O que é feito aqui está parcialmente errado no primeiro caso (não vazio, mas contém uma quebra de linha) e muito complicado no segundo.
Joey
1
@ Barlop Sim: esse é o ponto: ele aciona alguma mensagem de erro no stderr, mas nada (string vazia) no stdout. E >redirecione o stdout apenas para out.txt. Daí a criação de um arquivo vazio. Você pode desconsiderar a mensagem de erro neste contexto.
VonC 22/07
270

Tente o seguinte:

type NUL > 1.txt

isso definitivamente criará um arquivo vazio.

Justin
fonte
Isso adiciona "NUL é ./NUL" para o arquivo
dshgna
106

Aqui está outra maneira:

cd. > filename
Patrick Cuff
fonte
11
cd. > filenamenão é trabalho para mim em vez de cd > filename obras!
NaveenDA
3
"cd.> filename" cria um arquivo vazio; caso contrário, você terá um caminho de arquivo impresso no seu arquivo recém-criado usando o comando "cd> filename".
Niketan 7/08
6
Use isto: cd . > filename.extensionSignificando que você precisa de um espaço entre cde.
AIon 20/02
77

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

copy nul file.txt > nul

Apenas redirecione stdout para nul, e a saída da cópia desaparecerá.

qid
fonte
1
Falha se o arquivo.txt existir.
Grendler 9/11/2009
6
Falha se o arquivo existir é um bom comportamento, como eu entendo a pergunta.
wallyk
32
+1. É incrível como a resposta aceita é algo meio errado e meio complicado, enquanto a resposta obviamente correta quase não recebe crédito. Para adicionar a isso: type nul>fileseria outra maneira.
Joey
@ Joey, o aceito, tem várias soluções que funcionam para criar um arquivo vazio de 0 byte.
barlop
2
@ Barlop: Para referência, essa foi a resposta aceita no momento em que o comentário foi escrito. Não recebo uma notificação cada vez que uma resposta é alterada em um comentário.
Joey
48

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
iCrazybest
fonte
Boa visão geral dos comandos do cmd
KargWare 10/01
32

Lendo comentários no meu post, tenho que admitir que não li a pergunta corretamente.

Na linha de comando do Windows, uma maneira seria usar o fsutil :

fsutil file createnew <filename> <size>

Um exemplo:

fsutil file createnew myEmptyFile.txt 0

Abaixo está a linha de comando * nix.

touch filename

Este comando altera a data de modificação de um arquivo ou a cria se o arquivo não for encontrado.

nash
fonte
Infelizmente, a pergunta afirma especificamente: "Sem o comando de toque de Cygwin".
Qid
3
Existem implementações não Cygwin do comando touch: unxutils.sourceforge.net é bom.
Greg Hewgill 9/11/2009
No * nix, eu sou pessoalmente parcial de um simples > filename, que também pode ser usado para truncar um arquivo existente.
Frank fazendeiro
fsutilprecisa de privilégios administrativos. Isso é um pouco demais para pedir simplesmente criando um arquivo vazio ...
Joey
@ Joey Não são todos esses comandos um pouco demais para criar um arquivo vazio? Mesmo aquele abaixo com 120 pontos é muito quando você está acostumado a tocar.
johnny
29
echo "" > filename

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

Kris
fonte
2
Aparentemente, a resposta do VonC é melhor que a minha, então, por favor, vote isso em seu lugar.
Kris
3
Infelizmente: echo "" exibe aspas duplas e elas são gravadas no arquivo quando o fluxo é redirecionado para ele. O mesmo acontece com apenas: echo> filename porque ele escreve ECHO também está ativado / desativado no arquivo.
Grendler 9/11/09
talvez você possa colocar "@echo off" na linha antes de criar o arquivo para contornar isso?
Kris
27
call>file.txt

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

nephi12
fonte
O que é isso "limpo"?
GreenAsJade
4
não gera nada no arquivo, sendo fácil de lembrar e usar.
Nephi12
Esta foi a solução mais simples que funciona e mais fácil de lembrar.
Nhershy
12
cd > filename.cfg 

funcionou ao criar um arquivo em C: / Arquivos de Programas, onde você não tem acesso para criar arquivos diretamente.

Subhashi
fonte
11

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;
}
Paul Nathan
fonte
6

copiar com SomeFile.txt Enter

Ctrl-Z Enter

DRapp
fonte
Eu expliquei a questão de que o comando será executado a partir do script para que, infelizmente, qualquer interação do teclado não funcione. Obrigado mesmo assim.
Grendler
6

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

break > "file.txt"
foxidrive
fonte
6

para que você possa 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.

Aswin 1054
fonte
5

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

Nômade
fonte
2
Isso pode estar muito errado se estiver abcno caminho e for uma função conveniente para formatar todas as unidades, exceto o diretório de instalação.
Dedos Sangrentos
5

type nul>filename criará um novo arquivo vazio.

Desculpe estou atrasado.

UPDATE : Também copy nul filenamefunciona sem redirecionar (solução mais óbvia).

EKons
fonte
5

Use copy > your_file_name.extensionno prompt de comando como

P:\excecise> copy > Sample.txt
Raj Kumar Mishra
fonte
4

Você também pode usar:

echo. 2>foo

A saída de depuração para echo.quase definitivamente estará vazia.

Craig
fonte
4

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

Por favor, use o comando:

>copy /b NUL empty_file.txt

suhao399
fonte
4

Você pode usar o comando antigo

copy con file_name.ext

não digite nada, basta pressionar F6 para salvá-lo, mas ele imprimirá "Arquivo copiado", mas quando você abrir o arquivo, ele ficará vazio

Amado Saladino
fonte
4

Para criar qualquer tipo de arquivo, você pode usar o seguinte código

digite nul> (nome_do_arquivo). (tipo_do_arquivo)

Por exemplo. Se você deseja criar um arquivo de texto,

digite nul> demo.txt

Se você deseja criar um arquivo javascript,

digite nul> demo.js

Darshan Jain
fonte
3

Isso funcionou para mim,

echo > file.extension

Aqui está outra maneira que encontrei hoje, recebi idéias 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 é um comando interno ou externo, programa operável ou arquivo em lote.

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

Por sorte
fonte
1
Há mais de um "identificador" no qual os aplicativos de console podem ler / gravar. Os padrões são: (0) STDIN, (1) STDOUT e (2) STDERR. Acredito que a razão pela qual seu truque funcione aqui é porque toda a saída está indo para o identificador de erros, mas você está direcionando apenas STDOUT para o arquivo. Tente fazer: "xyz> emptyfile.txt 2> & 1" para redirecionar STDERR para qualquer STDOUT que esteja usando, que está redirecionando para "emptyfile.txt". Você deve ver a mensagem de erro dentro desse arquivo agora.
Brent Rittenhouse
3

Tente o seguinte:

echo $null >> filename 

Veja: superUser

shireef khatab
fonte
3

No Windows , tentei fazer isso

echo off > fff1.txt

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

Não encontrei nenhum comando além desse que pudesse criar um arquivo vazio.

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

Omkar Agrawal
fonte
não esqueça de ecoar depois de criar o arquivo, se necessário.
QMaster 14/11
Este comando congela o cmd após clicar em ENTER.
Kavin Raju S
Não sei por que isso ocorre, mas acho que você deve "ecoar" depois de inserir o comando acima.
Omkar Agrawal 04/06
3

Ainda outra maneira:

copy nul 2>empty_file.txt
GadBro
fonte
2

Só tentei no windows

copy con file.txt

depois pressione a Entertecla e depois pressioneCtrl+Z Enter

E funcionou para mim.

Para o Ubuntu geralmente estou criando um arquivo usando o comando VI

vi file.txt

Ele abrirá o arquivo, pressione a ESCtecla e digite : wp e pressione a entertecla. Ele criará um novo arquivo com dados vazios.

ARJUN KP
fonte
2
  • crie um arquivo bat com conteúdo echo '' > %1. (nomeie o arquivo como touch.bat)
  • adicione a pasta à variável PATH.
  • você pode usar o touch para criar arquivos. (Ex: touch temp.txtcria arquivo temp.txt)

consulte este artigo para obter mais informações.

Pranay Kumar
fonte
1

Hoje eu descobri um novo :)

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

title > file.txt
ninix
fonte
1

Execute o CMD no modo de administrador e digite isto:

NUL > file_name.extention

ou você digita isso

echo .> file_name.extention
Lekens
fonte
1

Aqui está outra maneira:

rem/ > file.ext

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

aschipfl
fonte
0

Primeiro, crie seu arquivo para que ele exista:

echo . > myfile.txt

Em seguida, substitua o arquivo criado por uma versão vazia usando o copycomando:

copy /y nul myfile.txt
Dowopfan
fonte