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 echo
zonder de ‘.’ zou “Command ECHO activated
plaatsen ” 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 eenNUL
-antwoord op hetset/p
-commando, waardoor de
variabele bleef ongewijzigd. Zoals gebruikelijk metset/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
dir
moet 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.txt
Voer kbd>
in
CTRL kbd>+ Z kbd>EN ENTER kbd>.
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.extension
in 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.txt
in 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,
xyz
is 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 > filename
maakt een nieuw leeg bestand aan.
Ook copy nul filename
werkt 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 touch
om 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.txt
maakt 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