0
@ECHO OFF 
:ProfilDeleter 
SET /P PC=Enter Remote Ip/HostName (for Exit press M): 
if [%PC%]==[] cls && @echo you should fill && goto ProfilDeleter 
if %PC%==m goto :Menu 
if %PC%==M goto :Menu 

SET /p NotToBeDeleted=Your UserName: 
cls 
::HERE NOT WORKING 
SET Profiles=\\%PC%\C$\Users 

PushD "%Profiles%" 
if /I Not "%CD%"=="%Profiles%" (ECHO. Unable to find %Profiles% exiting)&Pause&goto Menu 
FOR /F "Delims=" %%I in ('Dir /AD /B ^|FindStr /I /V /C:"%NotToBeDeleted%" /C:"ADMINI~1" /C:"Public" /C:"Default" /C:"Administrator"') DO RD /Q /S "%%I" 
PopD 
pause 
:Menu 
Exit 

Я сделал партию для того, чтобы удалить Remote User Profile Folders Но я не могу работать на удаленных компьютерах? Где проблема в скрипте?

+0

_Нет работы не имеет диагностической ценности. Пожалуйста, отредактируйте свой вопрос и добавьте более подробную информацию: сообщение об ошибке, нежелательное поведение и т. Д. Попробуйте 'Dir/AD/B' увидеть вывод и отладить' Dir/AD/B | findstr ... 'из команды' for/F'. – JosefZ

+0

Если я сменил ** SET Profiles = \\% PC% \ C $ \ Users ** на ** SET Profiles = C: \ Users ** работает скрипт. – serdar

+0

С ** SET Профили = \\% ПК% \ C $ \ Пользователи ** Я получаю сообщение «Не удалось найти% Profiles% exiting» echo message? – serdar

ответ

0

Read Pushd - UNC Network paths:

При указании UNC путь, PUSHD создаст временный диск карту и затем использовать этот новый диск.
Временные буквы диска выделены в обратном порядке в алфавитном порядке, поэтому, если Z: является бесплатным, он будет использоваться в первую очередь .

После PushD "%Profiles%":

  • "%Profiles%" будет держать быть "\\<PC or IP entered>\C$\Users" но
  • "%CD%" разрешило бы к чему-то вроде "Z:\Users"

Изменение логики сценария следующим образом (с некоторыми отладки ECHO сек):

@ECHO OFF 
SETLOCAL EnableExtensions 
:ProfilDeleter 
SET /P "PC=Enter Remote Ip/HostName (for Exit press M): " 
if "%PC%"=="" (
    rem cls 
    echo you should fill 
    goto :ProfilDeleter 
) 
if /I "%PC%"=="m" goto :Menu 

SET /p "NotToBeDeleted=Your UserName: " 
if "%NotToBeDeleted%"=="" SET "NotToBeDeleted=%UserName%" 
rem cls 
SET "Profiles=\\%PC%\C$\Users" 

echo variables are set as follows: 
echo  Profiles "%Profiles%" 
echo    PC "%PC%" 
echo NotToBeDeleted "%NotToBeDeleted%" 
if exist "%profiles%" (
    PushD "%Profiles%" 
    SETLOCAL EnableDelayedExpansion 
     echo CD after pushd "!CD!" 
    ENDLOCAL 
    rem next `FOR … DIR … |FINDSTR` command requires further debugging IMHO 
    FOR /F "Delims=" %%I in (' 
     Dir /AD /B ^|FindStr /I /V /C:"%NotToBeDeleted%" /C:"All users" /C:"Public" /C:"Default" /C:"Administrator" 
    ') DO (
      rem remove `ECHO` from next line no sooner than debugged 
      ECHO RD /Q /S "%%I" 
     ) 
    PopD 
) else (
    ECHO. Unable to find "%Profiles%" exiting 
    Pause 
    goto Menu 
) 
:Menu 
ENDLOCAL 
goto :eof 

Прочитано Debugging your batch files артикул.

+0

У меня такая же ошибка :( – serdar

+0

Мне удалось чтобы работать, но очень медленно Спасибо @JosefZ – serdar