estranheza do caminho do arquivo em lote

3

Eu fiz esse script em lote para excluir alguns dados dos aplicativos locais e das pastas de usuários redirecionadas.

Tudo isso funciona muito bem, além de um pequeno problema ...

   set share=\SERVER\d$\tsprofiles\%USERNAME%.V2\AppData\Roaming
   ECHO Deleting..... %share%
   net use Y: %share% 
   cd /D Y:\
   del * /F /S /Q
   del * /F /Q
   net use Y: /DELETE /YES

Por algum motivo, o caminho que o compartilhamento var cria navega para o caminho UNC no Explorer que estou tentando mapear para a unidade Y: ainda ao usar:

net use Y: %share%

sem dados. Tenho certeza de que não é um problema de permissões, pois estou executando isso de uma conta de administrador de domínio e um prompt de comando do administrador ...

    
por TacticalKitchen 06.10.2016 / 04:21

2 respostas

2

For some reason the path that the var share creates navigates to the UNC path in explorer that I'm trying to map to Drive Y: yet when using:

Não sei ao certo o que você quer dizer com "navega para o caminho UNC". Você quer dizer que muda para esse diretório em vez de criar um compartilhamento?

Além disso, não sei por que você precisa mapear o compartilhamento UNC para excluir seu conteúdo. Você não poderia simplesmente usar o caminho UNC diretamente como abaixo?

set share=\SERVER\d$\tsprofiles\%USERNAME%.V2\AppData\Roaming
ECHO Deleting..... %share%
del "%share%\*" /F /S /Q
del "%share%\*" /F /Q

Além disso, notei que seu exemplo é indentado. Esse snippet de um bloco de condição / loop está entre parênteses? Por exemplo, IF EXIST "\SERVER\d$" ( <your script lines here> ) .

Se o script estiver aninhado em um bloco de parênteses, você deve usar a expansão atrasada na variável share usando pontos de exclamação em vez de símbolos de porcentagem como este:

SETLOCAL ENABLEDELAYEDEXPANSION

IF EXIST "\SERVER\d$" (
   set share=\SERVER\d$\tsprofiles\%USERNAME%.V2\AppData\Roaming
   ECHO Deleting..... "!share!"
   net use Y: "!share!"
   cd /D Y:\
   del * /F /S /Q
   del * /F /Q
   net use Y: /DELETE /YES
)

ENDLOCAL

Caso contrário, a variável de compartilhamento será sempre o mesmo valor que foi quando o bloco de parênteses foi inserido em vez do valor definido.

E, como já foi dito nos comentários, você precisa citar o compartilhamento no caso de %USERNAME% ter espaços.

    
por 06.10.2016 / 07:13
0

Isso acabou sendo como eu complicando demais o inferno de tudo isso. Então, com base na sugestão do @David Woodward, fiz um pouco de re-design

Also, I'm not sure why you need to map the UNC share to delete its contents. Couldn't you just use the UNC path directly like below?

set share=\SERVER\d$\tsprofiles\%USERNAME%.V2\AppData\Roaming
ECHO Deleting..... %share%
del "%share%\*" /F /S /Q
del "%share%\*" /F /Q

Então, o que eu acabei conseguindo é um script muito mais simplificado que é muito melhor de se ler e muito mais rápido. Muito obrigada a todos vocês!

SET dir=%~dp0
SET userfolder="\SERVER\userfolders$\%USERNAME%\AppData\Roaming"
SET tsprofiles="\SERVER\TSPROFILES$\%USERNAME%.V2\AppData\Roaming"
SET localdata="C:\Users\%USERNAME%\AppData\Local\Temp"
SET inetcache="C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\INetCache"
REM Start of script
@ECHO OFF
ECHO [(===============================================================)]
ECHO ^|^|                                                               ^|^|
ECHO ^|^|  Remove un-neccecary files from %USERNAME% on %COMPUTERNAME%  ^|^|
ECHO ^|^|                                                               ^|^|
ECHO [(===============================================================)]
ECHO Deleting.... %inetcache%
del "%inetcache%\*" /F /S /Q > null
del "%inetcache%\*" /F /Q > null
ECHO Deleting.... %localdata%
del "%localdata%\*" /F /S /Q > null
del "%localdata%\*" /F /Q > null
ECHO Deleting.... Using UNC path %USERFOLDER%
del "%userfolder%\*" /F /S /Q > null
del "%userfolder%\*" /F /Q > null
ECHO Deleting.... Using UNC path %tsprofiles%
del "%tsprofiles%\*" /F /S /Q > null
del "%tsprofiles%\*" /F /Q > null
ECHO Return to working DIR
cd /D %dir%

Eu postei acima se alguém achar útil

    
por 06.10.2016 / 22:08