Precisa de arquivo em lote para executar várias janelas cmd ou buffer de mais de 9999 linhas

2

Eu preciso executar um comando em uma janela cmd (no XP) que retornará resultados sobre os arquivos em um determinado diretório. Felizmente, qualquer diretório não conterá mais de 9999 arquivos, por isso, se eu definir o buffer de linha como 9999, então estou bem. No entanto, eu preciso executar este comando em cerca de 600 diretórios! Eu gostaria de receber sugestões sobre como lidar com o problema.

Eu estava pensando em um arquivo em lote que abrisse um prompt do cmd, configurasse o buffer para 9999 linhas, executasse o comando, deixasse a janela aberta e, enquanto a primeira janela estivesse em execução, abrisse uma nova janela e repetisse o processo.

Claro, se eu pudesse armazenar em buffer ou de alguma forma retornar os resultados de mais de 9999 arquivos, isso seria ainda melhor.

Obrigado antecipadamente, Andrew

    
por Andrew 24.07.2012 / 17:59

1 resposta

4

Você pode armazenar a saída da tela em um arquivo de texto usando > ou >> . Para usá-lo, insira o comando como faria normalmente, mas no final, adicione um ou dois sons maiores e, em seguida, o nome do arquivo para o qual deseja gerar, assim: dir c:\users /s > c:\list.txt O uso de um único > sempre criará um novo arquivo, sobrescrevendo quaisquer arquivos existentes com esse nome. Usar dois >> criará o arquivo se ele não existir, mas será anexado aos arquivos existentes. Isso pode ser realmente útil para o registro em log de arquivos em lote, pois você pode colocar >> file.txt após cada linha e exibir toda a saída da tela no mesmo arquivo para que você possa revisá-lo na ordem. Tenha em mente que o uso desse método impedirá a saída na tela, porque o redireciona para o arquivo. Normalmente, você pode abrir o arquivo para analisá-lo mesmo enquanto estiver sendo criado (apenas certifique-se de não bloqueá-lo ou salvá-lo).

Exemplo de arquivo em lote com algum registro:

@echo off
SET DATENOW=%date:~-4,4%-%date:~-10,2%-%date:~-7,2%
SET TIMENOW=%time:~-11,2%.%time:~-8,2%.%time:~-5,2%
SET FILENAME="C:\Logs\Finance Batch %DATENOW% [%TIMENOW%].log"

if not exist "C:\Logs" md C:\Logs

ECHO ---START BATCH FILE---  [%time%]>> %FILENAME%
ECHO Clearing current folder... [%time%] >> %FILENAME%
if exist "C:\Files" rd "C:\Files" /s/q >> %FILENAME%
if not exist "C:\Files" md "C:\Files" >> %FILENAME%

ECHO Copying data from SHAREDOCS... [%time%] >> %FILENAME%
xcopy "\domain.local\sharedocs\*.*" "C:\Files" /EXCLUDE:exclist.txt /e /c /z /k >> %FILENAME%

ECHO ---BATCH FILE COMPLETE---  [%time%]>> %FILENAME%
ECHO. >> %FILENAME%
    
por 24.07.2012 / 18:10

Tags