Eu tenho um cenário onde as pastas pessoais dos usuários estão sendo criadas no formato user.domain. Ex.: C:\Users\John.Doe.CORP\*
. O problema é que tenho scripts que utilizam C:\Users\%USERNAME%\
que agora traduzem C:\Users\John.Doe\*
e quebram o script.
Eu gostaria de fazer algo como segue, mas preciso de ajuda para fazê-lo em lote:
set USERDIR=echo %USERPROFILE% | sed -i -e 's|C:\users\||g'
echo %USERDIR%
John.Doe.Corp
Por exemplo, retire o C:\Users\
de %USERPROFILE%
modo que, mesmo que %USERNAME%
não corresponda, C:\Users\%USERNAME%\
eu possa usarC:\Users\%USERDIR%\
Tenho dificuldade em entender sua pergunta, mas acho que o que você quer é criar uma variável que tenha apenas o nome de usuário seguido de um ponto, seguido do domínio.
Isso pode ser tão simples quanto:
Se você realmente deseja remover isso do caminho dos usuários e pode ter certeza de que está sempre em c:\Users, o seguinte pode ser usado:
O acima basicamente faz uma pesquisa e substitui %USERPROFILE% para remover
C:\Users\
da string e armazená-la na variável%User%
.Do meu lado, não há \ à direita, então não precisei removê-lo.
Mas se tudo o que você quer fazer é usar C:\Users\Username.Domain, que já está armazenado em
%USERPROFILE%
, basta usar esse caminho, não há necessidade de alterá-lo.EDIT: seu comentário sobre esta resposta finalmente nos diz a informação que faltava, que é: qual é o resultado final?
Por isso, vou sugerir uma solução diferente.
Você menciona que tem o caminho C:_users_username_domain_appdata e, como existem apenas 3 pastas dentro do appdata e, geralmente, o roaming é o que você deseja, %appdata% seria o caminho que você deseja usar. Você pode obter esse caminho formatado corretamente usando o seguinte comando set:
se você não quiser a parte de roaming no final, execute também o seguinte:
Para obter mais informações sobre como substituir um texto por outro na string, consulte: https://ss64.com/nt/syntax-replace.html