Как я могу исключить что-то в .txt от отображения с For? - PullRequest
1 голос
/ 09 марта 2020

Я сделал следующий скрипт для отображения всех локальных пользователей, у которых нет именительной папки в месте назначения.

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

Я действительно уверен, как мне этого добиться.

Вот мой код:

@echo off

set BackupDest=D:\backup

echo Destination folder missing for the following user(s):
for /D %%I in ("%HomeDrive%\users\*") do if not exist "%BackupDest%\%%~nI\" (
echo %%~nI
)

1 Ответ

1 голос
/ 09 марта 2020
@echo off
setlocal
set "BackupDest=D:\backup"

if not exist "%~dp0exclude_user.txt" > "%~dp0exclude_user.txt" echo Public

echo Destination folder missing for the following user(s) :

for /f "tokens=*" %%I in (
    'dir /a:d-h /b "%HomeDrive%\users\*" ^| findstr /b /e /i /l /v /g:"%~dp0exclude_user.txt"'
) do if not exist "%BackupDest%\%%~nxI\" (
    echo %%~nxI
)

Именованные пользователем папки, которые нужно исключить, можно добавить к exclude_user.txt. Файл находится в каталоге скриптов, например %~dp0. Если файл не exist, он будет создан со строкой, содержащей Public, которую, возможно, вы не хотите делать резервную копию.

Аргументы findstr в настоящее время установлены для буквального точного соответствия без учета регистра.

dir найдет папки, которые не являются скрытыми, так что специальные именованные папки, такие как Default не выводятся.

...