Hoe kan ik een leeg bestand maken op de opdrachtregel in Windows?

Hoe kan ik een leeg bestand maken op de DOS/Windows-opdrachtregel?

Ik heb het geprobeerd:

copy nul > file.txt

Maar het geeft altijd aan dat een bestand is gekopieerd.

Is er een andere methode in de standaard cmd?

Het zou een methode moeten zijn die de opdracht touchvan Cygwin niet vereist of andere niet-standaard commando’s.
De opdracht moet vanuit een script worden uitgevoerd, dus toetsaanslagen kunnen niet worden gebruikt.


Antwoord 1, autoriteit 100%

Zonderomleiding, Luc Vuof Erik Konstantopoulospuntuitnaar:

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

Hoe maak je een leeg tekstbestand van een batchbestand?” (2008) verwijst ook naar:

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

Nomadvermeldt een originele:

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

In dezelfde geest suggereert Samuelin de opmerkingen:

de kortste die ik gebruik is eigenlijk die van Nomad:

.>out.txt

Het geeft wel een foutmelding:

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

Maar deze fout staat op stderr. En >verwijst alleen stdout om, waar nietsis geproduceerd.
Vandaar de aanmaak van een leegbestand.
De foutmelding kan hier worden genegeerd. Of, zoals in Rain‘s antwoord, doorgestuurd naar NUL:

.>out.txt 2>NUL

(Oorspronkelijke antwoord, november 2009)

echo.>filename

(echo ""zou eigenlijk “” in het bestand plaatsen! En echozonder de ‘.’ zou “Command ECHO activatedplaatsen ” in het bestand…)

Opmerking: het resulterende bestand is niet leegmaar bevat een retourregelreeks: 2 bytes.


Deze discussieverwijst naar een echte batchoplossing voor een echt leegbestand:

<nul (set/p z=) >filename
 dir filename
 11/09/2009  19:45                 0 filename
 1 file(s)                         0 bytes

De “<nul” stuurt een NUL-antwoord op het set/p-commando, waardoor de
variabele bleef ongewijzigd. Zoals gebruikelijk met set/p, is de string naar de
rechts van het gelijkteken wordt weergegeven als een prompt zonder CRLF.

Aangezien hier de “string aan de rechterkant van het gelijkteken” leeg is… is het resultaat een leeg bestand.


Het verschil met cd. > filename(die wordt genoemd in Patrick Cuff’s antwoorden produceert ook een bestand met een lengte van 0 bytes) is dat dit “beetje omleiding” (de <nul...truc) kan worden gebruikt om echolijnen zonder CR:

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

De opdracht dirmoet de bestandsgrootte aangeven als 11 bytes: “helloworld!“.


Antwoord 2, autoriteit 44%

Probeer dit:

type NUL > 1.txt

dit zal zeker een leeg bestand creëren.


Antwoord 3, autoriteit 19%

Hier is een andere manier:

cd. > filename

Antwoord 4, autoriteit 12%

Als je echt een volledig leeg bestand wilt, zonder enige uitvoer naar stdout, kun je een beetje vals spelen:

copy nul file.txt > nul

Leid stdout gewoon om naar nul, en de uitvoer van de kopie verdwijnt.


Antwoord 5, autoriteit 8%

Bestand openen:

type file.txt

Nieuw bestand:

  • Manier 1: type nul > file.txt
  • Manier 2: echo This is a sample text file > sample.txt
  • Manier 3: notepad myfile.txt<druk op Enter>

Inhoud bewerken:

notepad file.txt

Kopiëren

copy file1.txt file1Copy.txt

Naam wijzigen

rename file1.txt file1_rename.txt

Bestand verwijderen:

del file.txt

Antwoord 6, autoriteit 5%

Op de Windows-opdrachtregel zou een manier zijn om fsutil:

fsutil file createnew <filename> <size>

Een voorbeeld:

fsutil file createnew myEmptyFile.txt 0

Hieronder is voor *nix opdrachtregel.

touch filename

Deze opdracht wijzigt de wijzigingsdatum van een bestand of maakt het aan als het bestand niet wordt gevonden.


Antwoord 7, autoriteit 5%

call > file.txt

Dit is de schoonste manier die ik ken.


Antwoord 8, autoriteit 5%

echo "" > filename

Ik geloof dat dit werkt op Windows/DOS, maar mijn laatste praktische ervaring met beide is al een tijdje geleden. Ik weet zeker dat het werkt op vrijwel elk POSIX-compatibel besturingssysteem.


Antwoord 9, autoriteit 2%

cd > filename.cfg 

werkte bij het maken van een bestand in C:/Program Files waar je geen toegang hebt om rechtstreeks bestanden te maken.


Antwoord 10, autoriteit 2%

Je kunt je eigen touch schrijven.

//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;
}

Antwoord 11

Voor het maken van elk type bestand kunt u de volgende code

gebruiken

type nul > (file_name).(file_type)

Als u bijvoorbeeld een tekstbestand wilt maken, dan

type nul > demo.txt

Als u een JavaScript-bestand wilt maken, dan

type nul > demo.js

Antwoord 12

copy con SomeFile.txtVoer

in

CTRL + Z EN ENTER .


Antwoord 13

U kunt een leeg bestand maken met

'' > newfile.txt

Navigeer naar de map en typ de bovenstaande opdracht in een PowerShell-venster.

Merk op dat dit niet werkt op de Windows-opdrachtprompt.


Antwoord 14

Nog een andere methode die een nul byte-bestand creëert:

break > "file.txt"

Antwoord 15

Gebruik copy > your_file_name.extensionin opdrachtprompt
zoals

P:\excecise> copy > Sample.txt

Antwoord 16

U kunt ook gebruiken:

echo. 2>foo

De foutopsporingsuitgang voor echo.Wordt bijna zeker leeg.


Antwoord 17

Probeer dit: abc > myFile.txt
Ten eerste maakt het een bestand met de naam myFile.txtin de huidige werkdirectory (in opdrachtprompt). Dan draait het de opdracht abc, wat geen geldige opdracht is. Op deze manier hebt u een nieuw leeg bestand gekregen met de naam myFile.txt.


Antwoord 18

Dit werkte voor mij,

echo > file.extension

Hier is nog een manier die ik vandaag heb gevonden. Ik kreeg ideeën van andere antwoorden, maar het werkte:

sometext > filename.extension

Bijvoorbeeld

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

Dit zou een foutmelding weergeven in de opdrachtprompt die,

xyzis niet als een interne of externe opdracht, bruikbaar programma of batchbestand.

Maar het vreemde dat ik ontdekte, was dat het bestand in de directory wordt aangemaakt, zelfs als de opdracht geen standaard Windows-opdracht is.


Antwoord 19

type nul > filenamemaakt een nieuw leeg bestand aan.

Ook copy nul filenamewerkt zonder omleiding (meer voor de hand liggende oplossing).


Antwoord 20

Ik heb veel threads gelezen, maar het is niet de kortste weg.

Gebruik het commando:

>copy /b NUL empty_file.txt


Antwoord 21

U kunt het oude commando gebruiken

copy con file_name.ext

Typ niets. Druk gewoon op F6om het op te slaan. Het zal echter "Bestand gekopieerd" afdrukken, maar wanneer u het bestand opent, zal het leeg zijn.


Antwoord 22

Nog een andere manier:

copy nul 2> empty_file.txt

Antwoord 23

Probeer dit:

echo $null >> filename 

Zie: Equivalent van Linux touchom een leeg bestand te maken met PowerShell


Antwoord 24

Op Windows

Ik heb dit geprobeerd

echo off > fff1.txt

En het creëerde een bestand met de naam fff1.txtmet een bestandsgrootte van 0 KB.

Ik heb geen andere commando's gevonden dan deze die een leeg bestand kunnen maken.

Opmerking: u moet zich in de map bevinden waarin u het bestand wilt maken.


Antwoord 25

  • Maak een bat-bestand met inhoud echo '' > %1(noem het bestand touch.bat).
  • Voeg de map toe aan de omgevingsvariabele PATH.
  • Je kunt aanraking gebruiken om bestanden te maken. (bijvoorbeeld: touch temp.txtmaakt het bestand temp.txtaan)

Bekijk dit artikelvoor meer informatie.


Antwoord 26

Hier is nog een andere manier:

rem/ > file.ext

De schuine streep /is verplicht; zonder dit wordt het omleidingsgedeelte becommentarieerd door rem.


Antwoord 27

Ik heb zojuist geprobeerd in Windows:

copy con file.txt

Druk vervolgens op de Enter-toets. Druk vervolgens op Ctrl+ Zen Enter.

En het werkte voor mij.

Voor Ubuntu maak ik meestal een bestand met de opdracht vi

vi file.txt

Het zal het bestand openen. Druk vervolgens op de Esc-toets. Typ vervolgens :wpen druk op de Enter-toets. Het zal een nieuw bestand maken met lege gegevens.


Antwoord 28

. >> file.txt
  • >>voegt standaarduitvoerin een bestand
  • .is gewoon een verkeerde opdracht om de lege standaarduitvoer door te geven aan >>

U ziet echter de uitvoer van standaardfoutin de CMD:

'.' wordt niet herkend als een interne of externe opdracht, bedienbaar
programma of batchbestand.

Je kunt deze foutmelding (als je wilt) onderdrukken door de standaardfout om te leiden naar NUL.

. >> file.txt 2> nul

Antwoord 29

Dit zal de titel van het opdrachtregelvenster veranderen, maar het zal ook een leeg bestand creëren.

title > file.txt

Antwoord 30

Voer CMD uit in de beheerdersmodus en typ dit:

NUL > file_name.extention

Of je typt dit

echo .> file_name.extention

Other episodes