Jak echo znaku TAB w wierszu polecenia

21

W pliku wsadowym systemu Windows, jaki jest właściwy sposób na echo TAB?

echo A<TAB>B<TAB>C

Wiem, że mogę wpisać TAB znak między wpisami, ale większość redaktorów wyświetli go jako ciąg spacji. Niektórzy nawet automatycznie przekonwertują je na spacje, szukam czegoś bardziej wizualnego.

Wyjaśnienie: <TAB> tutaj oznacza prawdziwy znak tabulacji. Szukam C \ t w skrypcie wsadowym.

Haas
źródło
Próbowałeś redaktorów i znalazłeś zakładkę „większość” jako sekwencję spacji? które to są? Pierwszym edytorem, którego wypróbowałem, jest notatnik, który wyświetla karty jako karty.
barlop

Odpowiedzi:

17

Po prostu naciśnij TABklawisz w edytorze, który go obsługuje, na przykład w Notatniku.

Więc jeśli wprowadzę to:

@echo 1<TAB>b
@echo 2<TAB>c

Spowodowałoby to:

wprowadź opis zdjęcia tutaj

Tamara Wijsman
źródło
1
To działa i tak to robię. Problem polega na tym, że każdy, kto edytuje plik, może zastąpić kartę o nieparzystej pozycji, nie zauważając, że jest to celowe.
Haas
5
@Haas: Co powiesz set TAB=<TAB>na wyjaśnienie, że jest to znak tabulacji, a następnie użyjesz go %TAB%później? O ile mi wiadomo, echotylko parsuje %...%. O ile mi wiadomo, nie ma wbudowanego znaku tabulacji ...
Tamara Wijsman,
@barlop: Co ...............? xD
Tamara Wijsman
1
Korzystam z sugestii Toma Wijsmana, ale z cytowaniem. SET "TAB= "gdzie biały znak to tak naprawdę znak TAB (0x09). Jest wyraźnie nieoptymalny, ale wydaje się być najlepszą alternatywą, jaką widziałem.
zapalił
Aby uzyskać znak TAB po naciśnięciu klawisza TAB, musisz uruchomić wiersz polecenia, cmd /F:OFFaby wyłączyć automatyczne uzupełnianie pliku / katalogu. nazwiska ...
aschipfl,
11

Jednym z rozwiązań jest to, że można ustawić zmienną środowiskową o nazwie TAB i ustawić wartość rzeczywistego znaku tabulacji. Może być konieczne skopiowanie i wklejenie znaku tabulacji z edytora tekstowego, aby wprowadzić go poprawnie. Próbowałem tego w systemie Windows 7 i działa.

W pliku wsadowym wystarczy użyć% TAB%, aby wstawić znak tabulacji.

Timothy C. Quinn
źródło
3
+1 sombody przegłosowało cię może, jeśli ta odpowiedź znajdzie się gdzieś w komentarzach. Ale odpowiedzi powinny znajdować się w odpowiedziach, a nie w komentarzach, dlatego głosuję ode mnie
cud 173
3

Takie ograniczenia są jednymi z powodów używania hosta skryptów systemu Windows lub programu PowerShell.

Dostarczono hosta skryptów Windows (w zestawie) z każdą wersją systemu Windows od 98 i może być zainstalowany na 95 i NT 4.

Utwórz plik o nazwie demo.vbsi wklej w nim następujący wiersz i zapisz go.

WScript.StdOut.WriteLine "a" + chr(9) + "b"

Teraz z katalogu, w którym został zapisany, wprowadź:

demo.vbs

i powinieneś zobaczyć:

a       b

Możesz też zrobić

cscript demo.vbs

co pozwoli ci użyć przełączników wiersza poleceń, które cscriptudostępnia.

(Testowany na Vista).

Wstrzymano do odwołania.
źródło
Powershell byłby bardzo miły, ale nie zawsze jest dostępny ...
Haas
@ Haas: Zobacz moją zredagowaną odpowiedź.
Wstrzymano do odwołania.
Dzięki Dennis. Chciałbym użyć czegoś nowszego i lepszego, ale jest to jedyna opcja, którą mam dla tego konkretnego skryptu.
Haas
@ Haas: Właśnie pomyślałem, że „szukam czegoś bardziej wizualnego” było wymogiem.
Wstrzymano do odwołania.
1

Oto jedno-liniowe rozwiązanie wykorzystujące PowerShell w pliku wsadowym:

Powershell -noprofile -nologo -command Write-Output "a`tb`tc"

`t jest znakiem tabulacji

dziwka
źródło
Ach, PowerShell to tabu, chyba że ktoś już to powiedział.
Pacerier
0

Tak długo, jak używasz edytora, który utrzymuje nienaruszone karty, możesz pobrać sed i umieścić go na swojej ścieżce, a następnie możesz zrobić coś takiego:

echo "A`B`C" | sed 's/\t/<TAB>/g'

gdzie każdy `oznacza prawdziwą kartę.


daleko od domu
źródło
-1

Podstawowym sposobem, ale mało znanym, jest wysyłanie TAB do CMD przy użyciu zwykłego chr (9) ASCII. Ten specjalny znak można wywołać, naciskając 9 na klawiaturze numerycznej, trzymając jednocześnie lewy ALT. Powinien pojawić się znak, który wygląda jak pogrubiony O, w przeciwnym razie włączone jest jakieś kodowanie lub mapowanie klawiatury.

Jeśli Twój edytor został ustawiony na zwykłe kodowanie ASCII lub tryb binarny, możesz zapisać tę sekwencję w pliku. Jeśli nie masz takiego, spróbuj wpisać CMD:

ECHO a (sequence LALT+9) b > tabchk.bat tabchk.bat

psiedlaczek
źródło
2
W jaki sposób jest lepszy / inny niż samo naciśnięcie klawisza Tab?
Máté Juhász