Apague os arquivos especificados e registre todas as saídas no CMD

2

Eu escrevi um script para uma escola em que estou trabalhando para montar automaticamente uma pasta como unidade X: e, em seguida, ir para a unidade X e examinar recursivamente todas as pastas e subpastas para .bat , .cmd , .exe e .vbs arquivos e exclua-os. O script funciona quase perfeitamente. Meu problema é que, se houver algum erro (por exemplo, um caminho de unidade é muito longo), ele não será registrado em um arquivo de texto. Existe alguma maneira isso pode ser feito com um arquivo de lote?

@echo off
net use X: \NETWORK PATH HERE
X:
cls
Echo Deleting bat files please wait...
del /s *.bat > DeletedFiles.txt
Echo Deleting CMD files please wait...
del /s *.cmd >> DeletedFiles.txt
Echo Deleting VBS files please wait...
del /s *.vbs >> DeletedFiles.txt
Echo Deleting Executable files please wait...
del /s *.exe >> DeletedFiles.txt
Echo Process Completed
set /p=Press Any Key To Close

Atualmente, qualquer erro que eu precise ler (manualmente) na janela do CMD e resolver. Seria útil ter todos os erros e arquivos excluídos salvos em um arquivo de texto para fins de manutenção de registros.

O PowerShell também está fora de questão; apesar de ser um administrador do sistema, o departamento de educação não me dará direitos para executar scripts PowerShell ou VBS.

    
por Super Geoff 07.08.2014 / 03:17

4 respostas

2

De: link

Você pode redirecionar tanto a saída padrão (stdout) quanto o erro padrão (stderr) para o mesmo arquivo de log.

Como

dir > a.txt 2>&1
    
por 07.08.2014 / 04:33
1

Exclusão alternativa com log de saída:

robocopy [empty folder] [path of file] [file to delete or wildcards] /purge

Para testar use / l:

robocopy [empty folder] [path of file] [file to delete or wildcards] /purge /l

Exemplo real:

C:\TEMP>dir /b

FILE_to_DELETE.txt

C:\TEMP>robocopy C:\EMPTY %cd% FILE_to_DELETE.txt /purge /l
-------------------------------------------------------------------------------    ROBOCOPY     ::     Robust File Copy for Windows
-------------------------------------------------------------------------------
Started: quinta-feira, 10 de dezembro de 2015 13:42:34
Source: C:\EMPTY\
Dest: C:\TEMP\
Files: FILE_to_DELETE.txt
Options: /L /DCOPY:DA /COPY:DAT /PURGE /R:1000000 /W:30
------------------------------------------------------------------------------
           0    C:\EMPTY\
          *EXTRA File                  0        FILE_to_DELETE.txt

------------------------------------------------------------------------------
        Total    Copied   Skipped  Mismatch    FAILED    Extras
        Dirs :         1         0         0         0         0         0     Files :         0         0         0         0         0      
    1    Bytes :         0         0         0         0         0      
    0    Times :   0:00:00   0:00:00                       0:00:00  
    0:00:00    Ended : quinta-feira, 10 de dezembro de 2015 13:42:34


C:\TEMP>robocopy C:\EMPTY %cd% FILE_to_DELETE.txt /purge

-------------------------------------------------------------------------------
ROBOCOPY     ::     Robust File Copy for Windows   
-------------------------------------------------------------------------------

      Started : quinta-feira, 10 de dezembro de 2015 13:42:41    Source
    : C:\EMPTY\
         Dest : C:\TEMP\

        Files : FILE_to_DELETE.txt

      Options : /DCOPY:DA /COPY:DAT /PURGE /R:1000000 /W:30
-----------------------------------------------------------------------------
              0    C:\EMPTY\
              *EXTRA File                  0        FILE_to_DELETE.txt
------------------------------------------------------------------------------
       Total    Copied   Skipped  Mismatch    FAILED    Extras
        Dirs :         1         0         0         0         0         0    Files :         0         0         0         0         0      
    1    Bytes :         0         0         0         0         0      
    0    Times :   0:00:00   0:00:00                       0:00:00  
    0:00:00    Ended : quinta-feira, 10 de dezembro de 2015 13:42:41

C:\TEMP>dir /b

C:\TEMP>
    
por 10.12.2015 / 17:00
1

Parece que você não escreveu nada no código para informar ao computador para gravar um arquivo de log. É o roteiro na sua totalidade ou apenas a parte em que você está trabalhando? Esta não é a minha área central, mas eu esperaria ver uma declaração "if" ou "ElseIf" para dizer ao computador o que fazer. Eu estou fazendo a linguagem, mas aqui está a idéia geral.

IF File cannot be deleted (Return Code X)
THEN Output Return Code + Filename to Logfile.txt
    
por 07.08.2014 / 04:12
0

Do seu arquivo bat você receberá um arquivo "DeletedFiles.txt", que terá a lista de todos os arquivos excluídos. Se você quiser que todo o texto gerado durante a execução de um arquivo bat, você pode usar o seguinte comando: $ mybatfile.bat > mylogfile.txt 2 > & 1; onde mybatfile.bat é o arquivo bat que você deseja executar, mylogfile.txt é o nome do arquivo no qual a saída gerada no prompt de comando ( que terá todos os erros ) é armazenada, executando-se o comando arquivo de morcego.

Você também pode usar o comando $ dir / s / b * .c para exportar todos os arquivos * .c nos diretórios e sub-diretórios de forma recursiva, sem excluí-los. Para registrá-lo, você pode usar $ dir / s / b * .c > listofcfiles.txt

    
por 11.12.2015 / 06:27