我有一个场景,用户的个人文件夹以 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