Показать полную графическую версию : Требуется помощь по удалению...
а как там выглядит? »
Так:
http://www.imageup.ru/img175/thumb/profiles3235832.jpg (http://www.imageup.ru/img175/3235832/profiles.gif.html)
У меня через реестр вообще не показывает новосозданных юзеров, а так показывает:
@echo off
set "uspath=Users"
:: для WS2003 и т.п. закомментировать строку выше и раскомментировать строку ниже (либо надо делать определение ОС и условие)
:: set "uspath=Documents and Settings"
for /f "delims=" %%a in ('wmic path Win32_UserAccount get FullName /value^|find "="') do set "%%a"& call :#
pause& exit
:#
if not "%FullName%"=="" net user|>nul find "%FullName%" && echo "%Systemdrive%\%uspath%\%FullName%"
exit /b
megaloman
12-12-2018, 21:07
ИМХО, вот это должно работать и в 2003, проверить не на чем@Echo Off
cls
Set "DelFile=*.txt"
For /f "delims=" %%a In ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /F "S-1-5-21-*"') Do (
For /f "Skip=2 tokens=2,* delims= " %%i In ('2^>nul reg query "%%a" /V ProfileImagePath') Do Echo === %%j &Dir /A:-D /B "%%j\%DelFile%"
)
pause
GoTo :Eof
Исправлено после тестирования mwz
У меня через реестр вообще не показывает новосозданных юзеров »
Пока не будет создан для него профиль — конечно, не будет. В принципе, достаточно будет запустить от имени этого новосозданного пользователя какое-нибудь приложение с ожиданием, чтобы профиль для него был создан.
Вообще же, все вещи, связанные с манипуляциями над файлами в профилях пользователей, за редким исключением, должны проводиться logon/logoff-скриптами, привязанными к этим пользователям.
У меня через реестр вообще не показывает новосозданных юзеров »
Я об этом сразу написал, хоть и чуток другими словами: в http://forum.oszone.net/post-2845444.html#post2845444
Как и со скриншом из WS2003: там сразу после установки несколько лет назад было создано ещё 4 пользователя. Но они ни разу не логинились, заходят (и то не все) только по ftp, и их профили созданы не были. Исходная же задача — чистить файлы в профилях пользователей; а если профиля нет — то и чистить исходно нечего.
вот это должно работать и в 2003, проверить не на чем »
Где-то кавычки забыты (Echo Off убрано; копия из окна CMD "as is", без устранения переноса строк):
c:\TEMP>Set "DelFile=*.txt"
c:\TEMP>For /F "delims=" %a In ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsof
t\Windows NT\CurrentVersion\ProfileList" /F "S-1-5-21-*"') Do (For /F "Skip=2 to
kens=3 delims= " %i In ('2>nul reg query "%a" /V ProfileImagePath') Do Echo ===
%i & Dir /A:-D /B "%i\*.txt" )
c:\TEMP>(For /F "Skip=2 tokens=3 delims= " %i In ('2>nul reg query "HKEY_LOCAL_M
ACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-1449298
094-4144929868-1542513627-1030" /V ProfileImagePath') Do Echo === %i & Dir /A:
-D /B "%i\*.txt" )
c:\TEMP>Echo === C:\Documents & Dir /A:-D /B "C:\Documents\*.txt"
=== C:\Documents
The system cannot find the file specified.
c:\TEMP>(For /F "Skip=2 tokens=3 delims= " %i In ('2>nul reg query "HKEY_LOCAL_M
ACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-1449298
094-4144929868-1542513627-500" /V ProfileImagePath') Do Echo === %i & Dir /A:-
D /B "%i\*.txt" )
c:\TEMP>Echo === C:\Documents & Dir /A:-D /B "C:\Documents\*.txt"
=== C:\Documents
The system cannot find the file specified.
c:\TEMP>(For /F "Skip=2 tokens=3 delims= " %i In ('2>nul reg query "End of searc
h: 2 match(es) found." /V ProfileImagePath') Do Echo === %i & Dir /A:-D /B "%i
\*.txt" )
c:\TEMP>pause
Press any key to continue . . .
megaloman
12-12-2018, 22:25
mwz, Там сложнее: при разборе не было учтено, что "Documents and Settings" содержит пробелы. Исправил. Если можно, протестируйте, пожалуйста.
Кстати, я обычно при отладке при Echo On записываю получившееся в файл способом файл.bat >результат.txt 2>&1
Читабельность лучше.
Единственное, если есть пауза, надо на черном экране энтер нажать для завершения батника.
не было учтено, что "Documents and Settings" содержит пробелы »
Ну я-то и имел в вижу именно это. Просто чаще всего так бывает при отсутствии кавычек: если выражение не заключено в кавычки, то синтаксический разбор идёт до первого пробела, который рассматривается как разделитель.
Вот теперь вроде нормально (не знаю только, что за значок появился в результате выполнения команды cls :) — тут-то его видно не будет, так что приложил скриншот):
c:\TEMP>cls
c:\TEMP>Set "DelFile=*.txt"
c:\TEMP>For /F "delims=" %a In ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /F "S-1-5-21-*"') Do (For /F "Skip=2 tokens=2,* delims= " %i In ('2>nul reg query "%a" /V ProfileImagePath') Do Echo === %j & Dir /A:-D /B "%j\*.txt" )
c:\TEMP>(For /F "Skip=2 tokens=2,* delims= " %i In ('2>nul reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-1449298094-4144929868-1542513627-1030" /V ProfileImagePath') Do Echo === %j & Dir /A:-D /B "%j\*.txt" )
c:\TEMP>Echo === C:\Documents and Settings\UpdatusUser & Dir /A:-D /B "C:\Documents and Settings\UpdatusUser\*.txt"
=== C:\Documents and Settings\UpdatusUser
Test.txt
c:\TEMP>(For /F "Skip=2 tokens=2,* delims= " %i In ('2>nul reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-1449298094-4144929868-1542513627-500" /V ProfileImagePath') Do Echo === %j & Dir /A:-D /B "%j\*.txt" )
c:\TEMP>Echo === C:\Documents and Settings\Administrator & Dir /A:-D /B "C:\Documents and Settings\Administrator\*.txt"
=== C:\Documents and Settings\Administrator
Test1.txt
c:\TEMP>(For /F "Skip=2 tokens=2,* delims= " %i In ('2>nul reg query "End of search: 2 match(es) found." /V ProfileImagePath') Do Echo === %j & Dir /A:-D /B "%j\*.txt" )
c:\TEMP>pause
Press any key to continue . . .
c:\TEMP>GoTo :Eof
Кстати, я обычно при отладке при Echo On записываю получившееся в файл способом файл.bat >результат.txt
Читабельность лучше.
Единственное, если есть пауза, надо на черном экране энтер нажать для завершения батника. »
Far Manager наше всё ;).
(не знаю только, что за значок появился в результате выполнения команды cls — тут-то его видно не будет, так что приложил скриншот): »
Вероятно, это 0x0С — FORM FEED, когда хост не может/не знает/не умеет сделать прогон печати, которым, надо полагать, и реализуется очистка консоли в cmd.exe, а в данном случае просто делается попытка отображения его как символа. Можете проверить также посредством echo c символами BELL (0x07), BACKSPACE (0x08) и т.п.
Кстати, что за хост на скриншоте?
Кстати, что за хост на скриншоте? »
На котором? :)
Если не на последнем — то это мой домашний серверок.
А значок... Проверил исходный текст, хотя мог бы и сразу сообразить это сделать — и увидел, что в вывод действительно ушёл код 0x0C. Ну а значок — это просто такой глиф в шрифте, которым пошла вставка: с номером непечатного символа 000С в рамке. При других шрифтах он и смотрится по-другому (или не виден вообще), поскольку глифы другие.
На котором? »
На этом:
https://i.imgur.com/QGKhamw.png
явно же не гольная консоль.
Iska
А, так это окно ввода в FireFox 63.0.3 :)
Куда я Ctrl+V сделал.
А в IE, как я сейчас посмотрел, этот значок не проявляется.
А, так это окно ввода в FireFox 63.0.3
Куда я Ctrl+V сделал. »
Ясно. А где Ctrl-C делался?
А где Ctrl-C делался? »
Перенаправил вывод так, как предложил megaloman (test.bat>result.txt), а затем открыл result.txt в Akelpad — откуда и скопировал. Символ 0x0C там выглядел как прямоугольник, который во многих шрифтах используют как глиф-заместитель (в частности для непечатных символов).
PS
А, наконец-то понял смысл вопроса. :)
Нет, не из консоли.
Перенаправил вывод так, как предложил megaloman (test.bat>result.txt), а затем открыл result.txt в Akelpad — откуда и скопировал. »
Точно, простое перенаправление вывода кажет:
https://i.imgur.com/fTNldUq.png
Оказывается, я просто сто лет не использовал команду CLS в пакетных файлах :lol:.
А, наконец-то понял смысл вопроса.
Нет, не из консоли. »
Я думал, может какой-нибудь SciTE или ещё что-нибудь подобное (когда увидел вертикальный курсор), которые умеют исполнять код под внешним исполнителем и перехватывать вывод.
megaloman
13-12-2018, 14:43
mwz, Простите меня! Надо делать так: файл.bat >результат.txt 2>&1 При этом и сообщения CMD о ошибках тоже попадут в файл, что при отладке немаловажно. А первый символ при этом меня никогда не напрягал и я о нём даже не задумывался. Спасибо Iska, просветил
Я тогда напишу сюда же, как сие может выглядеть под Far Manager'ом:
@echo off
setlocal enableextensions enabledelayedexpansion
echo Какой-то вывод
несуществующая команда
endlocal
exit /b 0
https://i.imgur.com/aTU7Y60.png
где «edit:» — префикс плагина FarCmd, указывающий плагину перехватить вывод («<») stdout и stderr («*») команды, в роли которой в данном случае выступает "%comspec% /c" с параметром «0003.cmd». Перехваченный вывод направляется во временный файл, который открывается в редакторе:
https://i.imgur.com/fbux6kl.png
Если нужно направить вывод stdout и stderr в отдельные окна — вместо «*» используется «?».
Команду можно поместить в меню пользователя (вызываемое по «F2») и пользовать по необходимости. Я чаще всего пользую данный плагин для получения справки, в несколько изменённом виде, а именно в виде Lua-кода:
lua:if CmdLine.Empty then print("edit:<" .. mf.clip(0)); else Keys("CtrlHome");print("edit:<"); Keys("CtrlEnd Enter"); end;
т.е., я набираю в командной строке, например, «for /?», нажимаю «F2», нажимаю «R» (горячая клавиша, заданная этому созданному пункту меню, «Run & Edit»), выполняется вышеуказанный код, который, если командная строка пуста, вводит в командную строку текст «edit:<», затем вводит содержимое буфера обмена и останавливается (позволяя либо сразу выполнить команду по ручному нажатию «Enter», либо предварительно откорректировать её, а потом уже нажимать «Enter»), в противном случае «нажимает» комбинацию клавиш «CtrlHome», помещающую курсор ввода в начало командной строки, вводит в позиции курсора ввода текст «edit:<», затем «нажимает» комбинацию клавиш «CtrlEnd», помещающую курсор ввода в конец командной строки и «нажимает» «Enter» отправляя команду на исполнение. В описанном примере результатом будет открытый редактор, в котором будет находиться вся выведенная справка по команде «for»:
https://i.imgur.com/1ZQJOEv.png
В общем и целом — до чёртиков удобно.
Надо делать так »
Что, повторить так? Без проблем, но вот тут уже не пойму, как запускается и работает вторая часть. :)
megaloman
13-12-2018, 18:16
mwz, возьмите, например, батник от Iska
Запустите его. (Для определенности обзовём его файл.bat)
Получите на консоли то что в эхо и сообщение об отсутствующей команде.
Запустите файл.bat >результат.txt
Получите в тхт- файле то, что в эхо, и на консоли сообщение об отсутствующей команде
Запустите файл.bat >результат.txt 2>&1
Получите в файле и то, что в эхо, и аварийное сообщение об отсутствующей команде
Стандартно вывод направляется в поток с дескриптором 1 (мы его направляем в файл.
Ошибочные сообщения направляются в поток 2. Указание 2>&1 перенаправляет этот поток туда же, куда направлен поток 1.
Поищите в гугле cmd перенаправление вывода.
... команду CLS »
этот символ можно лицезреть еще так:
@echo off& for /f %%a in ('cls') do echo:%%a& pause>nul
alpap, значит, вероятнее всего, моё предположение было неверным, и ClearScreen реализует сам командный процессор через «сладкую парочку» FillConsoleOutputCharacter() и FillConsoleOutputAttribute().
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC