У меня был поиск по форуму с исключением нескольких файлов при использовании команды DIR. Но не нашел то, что мне действительно нужно. Некоторые даже с PHP или VBS действительно не знают, как они работают.
Что я пытаюсь сделать, так это *DIR*ing все папки профилей, а также исключить определенные папки по умолчанию, это часть показа того, какие и сколько пользователей имеют профили на этом компьютере.
Я объясню немного больше, потому что я не могу полностью понять, каковы мои потребности.
Если я использую DIR без findstr.
DIR /A:d /B "F:\Documents and Settings"
Выход:
Administrator
All Users
Default User
LocalService
userprofile1
NetworkService
userprofile2
...
userprofileN
Но мои настоящие потребности таковы:
userprofile1
userprofile2
...
userprofileN
Я также зашел так далеко со своим сценарием.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
IF ERRORLEVEL 1 ECHO Your OS does not support enable extensions
DIR /A:d /B "F:\Documents and Settings" | findstr /v "Admin" | findstr /v "Default" | findstr /v "LocalService" | findstr /v "NetworkService"
EXIT
Мой приведенный выше скрипт действительно работает, но исправлен и может быть не очень хорошо закодирован. Я хотел бы спросить о том, можно ли использовать цикл For, чтобы сократить длинные каналы findstr и установить переменную, содержащую имена папок, для исключения? Я предпочитаю использовать переменную вместо текстовых файлов, содержащих папки для исключения.
Я придумал ниже, но он дублирует вывод:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
IF ERRORLEVEL 1 ECHO Your OS does not support enable extensions
SET xUser="Admin" "Default" "hi_I_will_be_future_added"
FOR %%A IN (!Xuser!) DO (
DIR /A:d /B "F:\Documents and Settings" | findstr /v %%A
)
Спасибо этому замечательному форуму и за все, что могло помочь мне и другим.
DIR
показывает полный путь к профилям пользователей, но вы сказали, что мои фактические потребности таковы: и показывать только профили, так что вы хотите удалить путь или нет?;-)
. Смотрите мой ответ ниже... - person Aacini   schedule 10.06.2014