从 %USERPROFILE% 中剥离出仅包含用户文件夹的内容 - 批处理

从 %USERPROFILE% 中剥离出仅包含用户文件夹的内容 - 批处理

我有一个场景,用户的个人文件夹以 user.domain 的格式创建。例如:C:\Users\John.Doe.CORP\*。问题是我有脚本C:\Users\%USERNAME%\,现在会转换为C:\Users\John.Doe\*并破坏脚本。

我想做如下的事情,但需要批量执行的帮助:

set USERDIR=echo %USERPROFILE% | sed -i -e 's|C:\users\||g' 
echo %USERDIR%
John.Doe.Corp

C:\Users\例如从中删除,%USERPROFILE%这样即使%USERNAME%不匹配C:\Users\%USERNAME%\我也可以使用C:\Users\%USERDIR%\

答案1

我很难理解你的问题,但我认为你想要的是创建一个仅包含用户名、后跟一个点、后跟域的变量。

这可能很简单:

set User=%USERNAME%.%USERDOMAIN%

如果您确实想从用户路径中删除它,并且可以确保它始终位于 c:\Users 中,那么可以使用以下命令:

set user=%USERPROFILE:C:\Users\=%

上述操作基本上是对 %USERPROFILE% 进行搜索和替换,以从C:\Users\字符串中删除并将其存储在变量中%User%

在我的这边,没有尾随的 \,所以我不需要将其删除。

但是如果您只想使用已经存储在的 C:\Users\Username.Domain,则%USERPROFILE%只需使用该路径,无需更改它。

编辑:您对这个答案的评论最终告诉了我们缺少的信息,即:最终结果是什么?

因此,我将提出一个不同的解决方案。

您提到路径为 C:_users_username_domain_appdata,并且考虑到 appdata 中只有 3 个文件夹,并且通常漫游是您想要的文件夹,%appdata% 将是您想要使用的路径。您可以使用以下 set 命令正确格式化该路径:

set excellappdata=%appdata:\=_%

如果你不想在最后使用漫游部分,也可以执行以下操作:

set excellappdata=%excellappdata:_roaming=%

有关将字符串中的某个文本替换为另一个文本的更多信息,请参阅:https://ss64.com/nt/syntax-replace.html

相关内容