Что я делаю неправильно?
Вы должны окружить последнее echo
с (
и )
(echo %t%) > paths.txt
Исправленный пакетный файл (test.cmd):
@echo off
setlocal
set t=%PATH:;=^&echo.%
echo %t%
(echo %t%) > paths.txt
:endendlocal
Пример использования:
> test
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\apps\WSCC\Sysinternals Suite
C:\apps\WSCC\NirSoft Utilities
C:\apps\Calibre\
C:\apps\Git\cmd
C:\apps\Git\mingw64\bin
C:\apps\Git\usr\bin
C:\apps\nodejs\
C:\Users\DavidPostill\AppData\Roaming\npm
> type paths.txt
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\apps\WSCC\Sysinternals Suite
C:\apps\WSCC\NirSoft Utilities
C:\apps\Calibre\
C:\apps\Git\cmd
C:\apps\Git\mingw64\bin
C:\apps\Git\usr\bin
C:\apps\nodejs\
C:\Users\DavidPostill\AppData\Roaming\npm
Более простое решение
Это решение не требует каких-либо скобок на пути, который должен быть экранирован.
test.cmd:
@echo off
setlocal
for %%i in ("%path:;=";"%") do (
echo %%~i >> paths.txt
)
:endendlocal
И из командной строки:
for %i in ("%path:;=";"%") do echo %~i >> paths.txt
Дальнейшее чтение