powód, dla którego są coraz ECHO is on.
dlatego opóźniony rozbudowa nie było użyte, co spowodowało wstawienie wartości %var%
i %MyVar%
przed uruchomieniem komendy for
, a ponieważ nie zostały zdefiniowane na początku, wstawiono puste zmienne. Po uruchomieniu echo %MyVar%>>text.txt
została ona zinterpretowana jako echo >>text.txt
. Gdy echo jest uruchamiane bez żadnych argumentów, wyprowadza ono informację, czy echo jest włączone, czy nie, co otrzymujesz w text.txt
.
Aby rozwiązać ten problem, trzeba zrobić dwie rzeczy:
Po pierwsze, nie jest coś nie tak z drugiej linii. Nie ma spacji między zestawem a lokalnym w setlocal
. Druga linia powinna być SETLOCAL EnableDelayedExpansion
.
drugie, aby korzystać z opóźnieniem ekspansję, trzeba wymienić wszystkie %
sw każdej zmiennej z !
, jak !var!
zamiast %var%
.
Wynik końcowy:
@echo ON
SETLOCAL EnableDelayedExpansion
For %%# in (*.*) do (
SET var=%%~n#
Set MyVar=!var!
set MyVar=!MyVar: =!
echo !MyVar!>>text.txt
)
rzeczywiście nie trzeba użyć zmiennej tymczasowej w tym przypadku można po prostu zrobić SET MyVar=%%~n#
i przejdź do set MyVar=!MyVar: =!
.
Zadzwoniłaś plik wsadowy echo.bat/cmd? – foxidrive