2012-05-30 17 views
9

Na Unix Chciałbym zrobić coś takiego:Jak przekierować standardowe wejście do pliku w wierszu poleceń systemu Windows?

cat > file.txt 

jaki sposób można zrobić to w wierszu polecenia systemu Windows lub pliku wsadowego?

EDIT: Zasadniczo szukam funkcjonalności cat bez argumentów (czyta ze standardowego wejścia i wypluwa ją z powrotem na standardowe wyjście).

+1

'wpisz tenfile> output.txt' wypiera wszystkie dane wyjściowe tak samo jak unix cat 'type tenplik >> output.txt' dołącza wszystkie dane wyjściowe do pliku bez nadpisywania – Kyle

+0

+1 za użycie' type' takiego fajnego i prostego rozwiązania. –

+0

@DominicP z tym wyjątkiem, że nie działa dla moich celów (przeczytaj po "EDYCJI:") – Matt

Odpowiedz

16

TYPE CON

CON to urządzenie MS-DOS dla wejścia konsoli. można przekierować do pliku w następujący sposób:

TYPE CON>output.txt

Aby zakończyć, uderzył Ctrl + C lub Ctrl + Z, Wprowadź (Ctrl + Z = EOF).

+0

Za rok za późno, ale na koniec odpowiedź nieobejmująca rozwiązania! Dzięki! – Matt

+1

Ah lol! To może być przydatne dla innych, ale myślę, że ... Prawdopodobnie jestem jedyną osobą w moim wieku, która zna elegancki skrót 'TYPE CON> LPT1', który przekształca MS-DOS w maszynę do pisania! –

+1

Alternatywy Windowsa dla wielu poleceń * nix istnieją - ale "ewoluowały", zamiast być inteligentnie zaprojektowane jako bash, więc są nieco trudniejsze do znalezienia i często znacznie bardziej skomplikowane w użyciu niż powinny ... Przykładem tej różnicy jest bash backtick vs. odpowiednik konstruktu "FOR" w DOS. Dziękuję niebiosom za scenariusz Powershell i C#! –

0

Standardowe wejście:

Plik wsadowy:

:: set /p MyVar= Prompts user for stdin information 

set /p MyVar= 

echo %MyVar% > filename 
+0

Musiałoby to jednak najpierw przeczytać całość stdin, prawda? Wydaje się, że byłoby niepraktyczne, gdyby stdin był bardzo duży. – Matt

8

Jeśli chcesz to czytać i pisać stdin co czytasz na standardowe wyjście, a następnie FINDSTR zadziała.

findstr "^" 

Możesz dostarczyć stdin poprzez przekierowanie lub potok.

FINDSTR "^" jest bardzo podobny do kota pod tym względem, że wyprowadza dokładne wejście binarne bez modyfikacji.

Jeśli jest identyczny z kotem, jeśli określono pojedynczy plik wejściowy.

findstr "^" fileName 

Znów wynik będzie dokładną kopią binarną.

Funkcjonalność rozbiega się, jeśli podano wiele plików wejściowych, ponieważ w takim przypadku nazwa pliku będzie używana jako przedrostek w każdym wierszu pliku wyjściowego.

Różni się także od kota tym, że nie może odczytać zarówno ze stdin, jak i nazwanego pliku.

EDIT
Zauważ, że FINDSTR dołączy end-of-line markers <CR><LF> do rurami wejście jeśli bardzo ostatni znak ze strumienia wejściowego nie jest <LF>. Jest to funkcja FINDSTR, a nie mechanizmu potoku Windows. FINDSTR nie dołącza <CR><LF> do przekierowanego wejścia. FINDSTR zawiesza się na czas nieokreślony na XP i Windows 7, jeśli odczytuje przekierowane dane wejściowe, a ostatnia linia nie kończy się na <LF>. Aby uzyskać więcej informacji, zobacz What are the undocumented features and limitations of the Windows FINDSTR command?.

+0

EDYCJA - poprawione informacje o podłączonym przewodach z dołączonym CR/LF. Dodano informacje o XP i Windows 7 potencjalnie wiszące z przekierowanym wejściem – dbenham

+0

Dziękuję za tę odpowiedź! Dla każdego, kto tam jest, plik wsadowy, który zapisuje (dołącza) stdin do pliku "foo.txt" to: findstr "^" >> foo.txt –

4

Myślę, że more.exe może być tym, czego szukasz.

To może zająć wejście zarówno z konsoli:

more > file1.txt 

Albo rurami z innego pliku, który TYPE CONnie rękojeść:

type file1.txt | more > file2.txt 

(more wydaje się dołączyć do nowej linii do pliku i rozwija karty, więc nie używaj go na danych binarnych!)

+0

W rzeczywistości pomógł mi, gdy miałem wiele linii. Dziękuję. – TheGameiswar

Powiązane problemy