2

Я написал сценарий для школы, в которой я работаю, чтобы автоматически смонтировать папку как диск X: затем перейти на диск X и рекурсивно просканировать все папки и подпапки на наличие .bat , .cmd , .exe и .vbs файлы и удалите их. Сценарий работает практически идеально. Моя проблема в том, что если есть какие-либо ошибки (например, путь к диску слишком длинный), он не будет записывать его в текстовый файл. Есть ли способ сделать это с помощью командного файла?

@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

В настоящее время любые ошибки мне приходится (вручную) читать из окна CMD и разбирать. Было бы удобно, чтобы все ошибки и удаленные файлы были сохранены в текстовый файл для целей учета.

Также о PowerShell не может быть и речи; Несмотря на то, что я являюсь системным администратором, отдел образования не дает мне прав на запуск сценариев PowerShell или VBS.

4 ответа4

2

От: https://stackoverflow.com/questions/1420965/redirect-stdout-and-stderr-to-a-single-file

Вы можете перенаправить как стандартный вывод (stdout), так и стандартную ошибку (stderr) в один и тот же файл журнала.

Такие как

dir > a.txt 2>&1
1

Похоже, вы ничего не написали в коде, чтобы сказать компьютеру написать файл журнала. Это сценарий целиком или просто часть, над которой вы работаете? Это не моя основная область, но я ожидаю увидеть операторы "если" или "ElseIf", чтобы сообщить компьютеру, что делать. Я придумываю язык, но вот общая идея.

IF File cannot be deleted (Return Code X)
THEN Output Return Code + Filename to Logfile.txt
1

Альтернативное удаление с выходным журналом:

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

Для тестирования используйте / л:

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

Реальный образец:

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>
0

Из вашего файла bat вы получите файл «DeletedFiles.txt», в котором будет список всех удаленных файлов. Если вам нужен весь текст, сгенерированный при выполнении файла bat, вы можете использовать следующую команду: $ mybatfile.bat> mylogfile.txt 2> & 1, где mybatfile.bat - это файл bat, который вы хотите выполнить, mylogfile.txt - это имя файла, в котором хранится вывод, сгенерированный в командной строке (в котором будут все ошибки), который выполняет файл bat.

Вы также можете использовать команду $ dir /s /b * .c для рекурсивного вывода всех файлов * .c в каталогах и подкаталогах без их фактического удаления. Для регистрации вы можете использовать $ dir /s /b * .c> listofcfiles.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .