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
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.
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
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>
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
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
Tags windows batch-file