Pracuję nad skryptem, który uruchamia aplikację wiersza poleceń, która wymaga wprowadzania danych przez użytkownika w czasie wykonywania (niestety nie podano argumentów wiersza poleceń).Windows cmd echo/pipe dodaje dodatkową przestrzeń na końcu - jak ją przyciąć?
Więc moja pierwsza próba wyglądała tak:
@echo off
(echo N
echo %~dp0%SomeOther\Directory\
echo Y)|call "%~dp0%SomeDirectory\SadSoftware.exe"
Na pierwszy rzut oka wyglądało to działało całkiem dobrze, ale jak się okazało, że nie. Po przeprowadzeniu dochodzenia dowiedziałem się, że katalog, który przekazywałem do oprogramowania, zawierał dodatkowy obszar na końcu, co spowodowało pewne problemy.
Rozglądałem się przez chwilę i dowiedziałem się następującego pytania: echo is adding space when used with a pipe.
To wyjaśniło, co się dzieje, ale tak naprawdę nie pomogło mi rozwiązać mojego problemu (nie jestem zbyt zaznajomiony z programowaniem wsadowym).
W tej chwili „rodzaj rozwiązany” mojego problemu z brzydkim obejścia:
echo N> omg.txt
echo %~dp0%SomeOther\Directory\>> omg.txt
echo Y>> omg.txt
"%~dp0%SomeDirectory\SadSoftware.exe"<omg.txt
del omg.txt
To rozwiązanie działa, ale jestem mniej niż z niego zadowolony. Czy jest jakiś ładniejszy sposób? Lub jeszcze brzydszy sposób, ale bez tymczasowego pliku?
Tylko dla zakończenia, może można to 'cmd/Q/C" (echo line1) & (echo line2) & (echo line3) "| more' –
Dzięki! Użyłem drugiego rozwiązania i działa jak czar.^_^ – Dino
Dzięki za wspaniałą odpowiedź. Użyłem Solution2 w ten sposób (nowe linie nie są dozwolone w komentarzach zatem "" to nowa linia tutaj): '( echo b^&^ echo^&^ rem .) sort " , więc nie musisz umieszczać wszystkiego w jednym wierszu. –
anilech