Você não pode retomar diretamente a execução de um arquivo em lotes exatamente de onde ele parou no Windows 7 (ou em qualquer outra versão do Windows) após um sistema de reinicialização ou desligamento. Os arquivos em lote são inerentemente apátridas; Eles não salvam seu estado interno entre as corridas.
No entanto, você pode obter um efeito semelhante usando técnicas para gerenciar o estado de processamento de arquivos * externamente * com o arquivo em lote. Aqui estão algumas abordagens:
1. Usando um arquivo temporário para rastrear o progresso: Este método envolve a criação de um arquivo temporário que armazena o último item processado ou número da linha. O arquivo em lote lê esse arquivo no início para determinar onde retomar.
`` `lote
@echo off
Definir "tempfile =progress.tmp"
Defina "InputFile =Your_input_file.txt"
::Verifique se o arquivo de progresso existe. Caso contrário, comece do início.
se existir "%tempfile%" (
set /p "lastProcedLine =" <"%tempfile%"
eco retomando da linha:%LastProcessedLine %
) outro (
Definir "LastProcessesLine =0"
eco começando do começo
)
::Processe o arquivo, começando na última linha processada.
para /f "skip =%lastprocesslline%delims =" %% a in (%inputfile%)
Linha de processamento de eco:%% A
::Sua lógica de processamento aqui ...
::Atualize o arquivo de progresso com o número da linha atual.
eco %% a> "%tempfile%"
)
del "%tempfile%"
Echo terminou!
`` `
2. Usando um banco de dados (mais complexo, mas robusto): Para cenários mais complexos ou conjuntos de dados grandes, um pequeno banco de dados (como o SQLite) seria mais adequado. O arquivo em lote atualizaria o banco de dados com as informações de progresso. Isso oferece melhor resiliência e rastreamento. Essa abordagem requer a instalação do SQLite e o uso de suas ferramentas de linha de comando no seu script em lote.
3. Modificando o arquivo de entrada: Isso é menos elegante, mas pode funcionar para casos simples. Você pode modificar o próprio arquivo de entrada para marcar linhas processadas (por exemplo, adicionar um marcador ao início de cada linha). O script então pula linhas com o marcador. Isso é menos robusto porque altera diretamente o arquivo de entrada.
Considerações importantes: *
Manuseio de erro: Adicione o manuseio de erros aos seus arquivos em lote (por exemplo, `Se ErrorLevel 1 ...`). Se o processamento falhar, seu arquivo de progresso poderá ser inconsistente.
*
Atomicidade: Se você estiver escrevendo em arquivos, considere possíveis problemas com gravações parciais devido a interrupções. Use técnicas para garantir a integridade dos dados.
*
Bloqueio de arquivo: Se várias instâncias do arquivo em lote puderem ser executadas simultaneamente, implemente o bloqueio de arquivos para evitar condições de corrida.
Lembre -se de substituir `" your_input_file.txt "` com o nome real do seu arquivo de entrada. O exemplo fornecido mostra a linha de processamento por linha, mas você pode adaptá -lo para processar outras estruturas de dados. Escolha o método que melhor se adapte às suas necessidades e complexidade. A abordagem de arquivo temporário é a mais fácil para casos simples. Para qualquer coisa mais envolvida, um banco de dados é uma solução muito mais robusta.