Pytanie Jak utworzyć pusty plik tekstowy z pliku wsadowego?


Czy ktoś może zapamiętać, co było poleceniem utworzenia pustego pliku w MSDOS przy użyciu pliku BAT?


208
2017-10-16 20:38


pochodzenie


Również w stackoverflow.com/questions/1702762, "Jak utworzyć pusty plik w wierszu poleceń?". - Peter Mortensen
Nie mylisz DOS i cmd.exe, jesteś? - user unknown


Odpowiedzi:


echo. 2>EmptyFile.txt

215
2017-10-16 20:39



To echo nowej linii do stdout, chociaż ... moja odpowiedź nie. - ephemient
Czasami jest to istotne; Kiedyś miałem dotyk, dopóki nie wpadłem na pomysł skopiowania NUL (lub NUL> file) w celu uzyskania plików 0-bajtowych. :-) - Joey
Aby połączyć odpowiedź ephemient'a i tę, możesz zrobić: "echo.> NUL 2> EmptyFile.txt", aby osiągnąć te same wyniki bez wysyłania nowej linii - cmptrgeekken
Dlaczego jest . w echo. - Ninh Pham
@Reegan Jeśli użyłeś echo 2 bez .konsola będzie czytać "ECHO jest wyłączone". Za pomocą echo. 2 skutecznie wycisza wyjście konsoli, wyświetlając tylko znak nowej linii. - OneManBand


skopiuj NUL EmptyFile.txt

DOS ma kilka specjalnych plików (urządzeń, faktycznie), które istnieją w każdym katalogu, NUL będący odpowiednikiem systemu UNIX /dev/null: to magiczny plik, który zawsze jest pusty i wyrzuca wszystko, co do niego napiszesz. Tutaj jest lista niektórych innych; CON czasami jest również przydatny.

Aby uniknąć jakiegokolwiek wyjścia, możesz użyć

copy / y NUL EmptyFile.txt> NUL

/y zapobiega copy od zadawania pytania, którego nie można zobaczyć, kiedy wyjście idzie NUL.


311
2017-10-17 04:07



+1 - pytanie określa stan pusty plik, więc zaakceptowana odpowiedź jest błędna. - Joe
Rozwiązanie DannySmurf w rzeczywistości tworzy pusty plik - znak nowej linii przechodzi na standardowe wyjście, nic nie przechodzi do stderr (kierowane do nowego pliku). Ale dzięki za +1 - ephemient
type nul> EmptyFile.txt jest najkrótszym rozwiązaniem. Nadal twoja odpowiedź jest lepsza niż zaakceptowane rozwiązanie, bo twój plik będzie naprawdę pusty. +1 - TPAKTOPA
Ostrzeżenie: tak, chodziło o to, jak utworzyć pusty plik, ale zazwyczaj chcesz "upewnić się, że plik istnieje". Podczas korzystania z copy /Y NUL polecenie może usunąć istniejącą zawartość. Jeśli jesteś przyzwyczajony do Unixa " touch polecenie, może to wcale nie być takie, jakiego oczekujesz.) Używanie type NUL >> emptyfile.txt jest bezpieczniejszy pod tym względem. - eckes
IMO ta odpowiedź powinna być zaakceptowana. - Fabien PERRONNET


type NUL > EmptyFile.txt

Po przeczytaniu poprzednich dwóch postów, ta mieszanka tych dwóch jest tym, co wymyśliłem. Wydaje się trochę czystszy. Nie musisz się martwić przekierowaniem "1 pliku (ów) skopiowanego". wiadomość do NUL, tak jak poprzedni post, i ładnie wygląda obok ECHO OutputLineFromLoop >> Emptyfile.txt zwykle następuje to w pliku wsadowym.


159
2017-11-17 10:03



+1 to jest ten naturalny, który przychodzi mi do głowy, a nie na przykład ze stderr itp. - Amit Naidu
Masz rację. Ta metoda pozwala uniknąć flagi / y w poleceniu copy. - djangofan
najprostsze rozwiązanie i działa jak urok - Castro Roy
Krótki i łatwy. Kilka innych rozwiązań nie tworzy nowego pliku o zerowych bajtach! - Christian St.


Techniki, które zebrałem z innych odpowiedzi:

Tworzy plik 0 bajtów bardzo wyraźny, zgodny wstecz:

type nul >EmptyFile.txt

pomysł przez: anonimowy, Danny Backett, prawdopodobnie inni, ja sam zainspirowany Praca JdeBP

Plik bajtowy 0 w inny sposób, jest zgodny wstecz:

REM. >EmptyFile.txt

pomysł przez: Johannes

Plik 0 bajtowy Trzeci sposób zgodne z poprzednimi wersjami:

echo. 2>EmptyFile.txt

pomysł przez: Smerf

Bajt 0 zapisuje systematyczny sposób  prawdopodobnie dostępne od Windows 2000:

fsutil file createnew EmptyFile.txt 0

pomysł przez: Emm

Plik o rozmiarze 0 bajtów zastępujący pliki tylko do odczytu

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL

pomysł przez: copyitright

Pojedynczy znak nowej linii (2 bajty: 0x0D 0x0A w notacja szesnastkowa, alternatywnie napisane jako \r\n):

echo.>AlmostEmptyFile.txt

Uwaga: Nie przestrzeń pomiędzy echo, . i >.

pomysł przez: W jaki sposób można wywołać echo nowego wiersza w plikach wsadowych?


edytować Wygląda na to że każdy nieprawidłowy dowództwo przekierowany do pliku tworzy pusty plik. heh, funkcja! zgodność: uknown

TheInvisibleFeature <nul >EmptyFile.txt

Plik 0 bajtów: nieprawidłowe polecenie / z losową nazwą (zgodność: uknown):

%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt

przez: świetnie źródło losowo przez Hung Huynh

edytuj 2 Andriy M zwraca uwagę prawdopodobnie najbardziej zabawny / prowokujący sposób osiągnięcia tego poprzez nieprawidłowe polecenie

Plik 0 bajtów: nieprawidłowe polecenie / funky (zgodność: nieznany)

*>EmptyFile.txt

pomysł przez: Andriy M

Plik o rozmiarze 0 bajtów:

break > file.txt

pomysł przez: foxidrive dzięki komentarz z Double Gras!


48
2018-04-18 16:37



Jego type nul ..., nie type <nul ..., tak właściwie. - Andriy M
@AndriyM dzięki, że masz rację dokonałem edycji! Nie zauważyłem, ponieważ ciekawie działa z niewłaściwą. co może oznaczać, że każda niepoprawna komenda przekierowana do pliku utworzyłaby pusty plik! po prostu próbowałem z NonExistentCommand <nul >EmptyFile.txt i zadziałało - n611x007
ponieważ nie byłoby bezpiecznie polegać na nazwie zakodowanej na sztywno, spodziewając się, że jest ona "nieważna", dodałem opcję losowej nazwy polecenia - n611x007
Jeszcze jeden: break > file.txt, rekwizyty foxidrive - Gras Double
I większość poleceń może być użyta z >> jeśli potrzebujesz "musi istnieć, ale nie powinno być obcięte, jeśli istnieje" (jak Unix touch robi) - eckes


REM. > empty.file


25
2018-04-12 09:13



Wygląda na to, że nie działa, ale działa. Niesamowity. - djangofan
Utknąłem na Windows CE, i to jest jedyna odpowiedź, która tworzy i pusty plik! Inne podejścia dodają pustą linię lub po prostu nie działają ... - AntonyG
Jedynym problemem z tym rozwiązaniem jest to, że jeśli w bieżącym katalogu znajduje się plik o nazwie REM i wpisujesz REM.cmd odpowie "rem". nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy. " - DodgyCodeException


Jeśli istnieje możliwość, że plik do zapisania już istnieje i jest tylko do odczytu, użyj następującego kodu:

ATTRIB -R filename.ext
CD .>filename.ext

Jeśli nie istnieje plik, po prostu wykonaj:

CD .>filename.ext

(zaktualizowany / zmieniony kod zgodnie z komentarzem DodgyCodeException)

Aby pominąć wszelkie możliwe błędy:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL

8
2018-02-26 23:30



Jedynym problemem z tym rozwiązaniem jest to, że jeśli istnieje plik o nazwie CD(brak rozszerzenia) w bieżącym katalogu i piszesz CD.cmd odpowie "CD". nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy. " Jeśli zamiast tego wpisz CD . (z spacją przed kropką) to zadziała. - DodgyCodeException


fsutil file createnew file.cmd 0

7
2018-03-31 22:38



Działa to w celu utworzenia pliku na zamapowanej liście dysku. - AnneTheAgile
Narzędzie FSUTIL wymaga posiadania uprawnień administratora. - DodgyCodeException
fsutil nie jest standardowym narzędziem w MS-DOS. - Bernhard Eriksson


Jeszcze jedno, aby dodać do książek - krótkie i słodkie do wpisania.

break>file.txt
break>"file with spaces in name.txt"

5
2017-07-18 10:32



Sądzę, że pominiemy cytaty - Nam G VU
@NamGVU Cytaty są używane w docelowej nazwie pliku, jeśli zdecydujesz się użyć długich elementów nazw plików, takich jak spacja lub itp. Nie są one częścią zawartości pliku. - foxidrive
Tak, zgadzam się ^ ^ Zezwolenie na aktualizację twojego, tak jak zostało to omówione. - Nam G VU
@NamGVU Cytaty można pozostawić na miejscu z długą nazwą pliku lub bez niego. Domyślam się, że jeśli został wpisany z linii poleceń z krótką nazwą pliku, to nie chciałbyś niepotrzebnego pisania. - foxidrive
Sugeruję usunięcie drugiej linii z tej odpowiedzi. IMO jest to najlepsza odpowiedź na pytanie, ale druga linia naprawdę nie dodaje wartości, chyba że osoba, która próbuje z niej korzystać, nie zna podstaw obsługi linii białej w linii poleceń. - kayleeFrye_onDeck