O que estou fazendo errado?
Você precisa envolver o último echo
com (
e )
(echo %t%) > paths.txt
Arquivo em lote corrigido (test.cmd):
@echo off
setlocal
set t=%PATH:;=^&echo.%
echo %t%
(echo %t%) > paths.txt
:endendlocal
Exemplo de uso:
> 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
Uma solução mais simples
Esta solução não requer nenhum parênteses no caminho a ser escapado.
test.cmd:
@echo off
setlocal
for %%i in ("%path:;=";"%") do (
echo %%~i >> paths.txt
)
:endendlocal
E na linha de comando:
for %i in ("%path:;=";"%") do echo %~i >> paths.txt
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- sintaxe de colchetes - usando parênteses / colchetes para agrupar expressões