Alterar para letra de unidade
Para mudar para uma letra de unidade específica enquanto o diretório do prompt de comando estiver usando uma letra de unidade diferente daquela para a qual você precisa mudar, basta usar o parâmetro /D com o CD comando (por exemplo, CD /D <DriveLetter>: ) para alterar para uma letra de unidade diferente antes de executar os comandos procedentes.
Delims
Você deve omitir o uso do delims=" no loop FOR para informar que o espaço não é um delimitador que não é o que você deseja impedir que cr/cr/lf emita conforme o LotPings comentário.
-
FOR /?delims=xxx - specifies a delimiter set. This replaces the default delimiter set of space and tab.
Como ele define o conjunto de delimitadores padrão de espaço e guia quando você coloca delims=" com as aspas finais após o sinal de igual =" , isso indica que não há delimitadores agora.
Compact
Como Compact é executado em arquivos no diretório sem especificar o caminho em um argumento, se aplicável, você pode primeiro CD /D <Letter>: e, em seguida, execute Compact /C para compactar todos os arquivos em um diretório ou Compact /C /S para compactar todos os arquivos e pastas recursivamente no diretório.
Script em lote
for /f "skip=1" %%x in ('wmic logicaldisk get caption') do (
CD /D %%x
Compact /C /S
<Next or other command>
)
Note: The drive letter is listed in a
<letter>:format e.g.H:. SoCD /D H:works just fine. You will obviously add the\to the end of the iterated%%xi.e.%%x\if you need to append a path to use a full path (%%x\folder\path) as a command argument e.g.dir %%x\folder\path.
Mais recursos
-
Key /D : change the current DRIVE in addition to changing folder. -
Key /C Compress the specified files. Directories will be marked so that files added afterward will be compressed. /S Perform the specified operation on files in the given directory and all subdirectories. Default "dir" is the current directory. -
Preciso de um .bat para compact.exe e ignorando os tipos de arquivo?
