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%%x
i.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?