#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
проблему, с которой вы столкнулись, хотя я не могу воспроизвести описанный вами сценарий.