Как пропустить ошибку, обнаруженную в пакетном файле, и продолжить выполнение командной строки?

#batch-file #cmd #windows-console

#пакетный файл #cmd #windows-консоль

Вопрос:

Я использую командный процессор Windows, (cmd.exe ), чтобы сканировать все файлы на сервере. Моя цель — иметь .txt файл с именами файлов и где они расположены (для более быстрого поиска).

Это мой код:

 P:
DIR *.* /P /Q /S > C:Usersaperea01eng.TXT

Z:
DIR *.* /P /Q /S > C:Usersaperea01CADUsers.TXT

R:
DIR *.* /P /Q /S > C:Usersaperea01eng_restricted.TXT
 

Пакетный файл фиксирует свою цель, но если я нахожу папку, к которой у меня нет доступа, пакетный файл перестает работать. Он записывает и сохраняет последние найденные файлы, но не может продолжить.

Есть ли способ пропустить Access denied ошибку и продолжить сканирование сервера?

Заранее спасибо.

P Z и R некоторые из подключенных сетевых дисков на моем компьютере.

Комментарии:

1. Вы не думаете, что это /p переключатель? Тип dir /? .

2. Привет, @Noodles, /P это не основная причина, даже если я удалю ее из пакетного файла, после многих-многих файлов, когда он находит личную папку (личная папка с ограниченным доступом), код сохраняет информацию и завершает работу CMD (командный процессор Windows). Вы были правы в DIR <каталог> .

Ответ №1:

 (FOR /R "P:" %G IN (.) DO @PUSHD %G amp;amp; @DIR /Q amp; @POPD) >> "C:Usersaperea01eng.TXT"
 

Это приведет к перебору всех вложенных P: папок и запуску DIR /Q (стандартный список с владельцем) только в том случае, если команда может PUSHD (изменить каталог) в нее. Весь вывод перенаправляется на eng.TXT . Надеюсь, это предотвратит Access denied проблему, с которой вы столкнулись, хотя я не могу воспроизвести описанный вами сценарий.