batch-file - 如果 Windows "Admin"用户名已更改,则批处理文件转到下一个 xcopy 命令

标签 batch-file xcopy

我希望能够只运行一个 xcopy 实例,而不是多个实例,从 USB 驱动器到我插入的计算机上的 .\admin\desktop,但是我所使用的某些计算机可能具有管理员用户名更改为该人的姓名。 Windows 管理员用户帐户是否有通用的批处理命名约定?如果是这样,我想只使用它,无论它是什么,而不是列出每台计算机的每个人的用户名并猜测它可能是什么,而无需每次都查看。 这是我到目前为止所拥有的,如果我知道“管理员”用户仍然被标记为“管理员”,那么它会很好地工作。

@echo off

xcopy "%~dp0M1k_SWPCB\*.*" "C:\Documents and Settings\Admin\Desktop\SWPCB\" /d /s /h /v /c /f /k /y

pause

我也尝试了“所有用户”,但在某些情况下该目录不存在并且无法工作。另外,如果计算机有多个用户,我不希望它出现在每个人的桌面上。

任何帮助将不胜感激。

谢谢

最佳答案

所有用户都有一个 SID 标识符,并且本地管理员帐户始终以 -500 后缀结尾,因此您可以通过检查注册表上的 SID 来获取管理员用户名:

@Echo OFF

FOR /F "Tokens=*" %%@ IN ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" ^| FIND "-500"') DO (
    FOR /F "Tokens=2,*" %%A IN ('Reg Query "%%@" /v "ProfileImagePath" ^| FIND /V "%%@"') DO (
        Echo    Admin SID: %%~n@
        Echo Admin Folder: %%B
    )
)

Pause>NUL&Exit

输出:

   Admin SID: S-1-5-21-148789306-3749789949-2179752015-500
Admin Folder: C:\Users\Administrador

另一种方法是使用 VBScript,您可以在批处理文件中使用它并将管理员名称写入文本文件,然后接下来您将使用文本文件的内容设置一个变量。 (这个函数不是我写的):

Set objNetwork = CreateObject("Wscript.Network")
objComputerName = objNetwork.ComputerName

Set objwmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & objComputerName)
qry = "SELECT * FROM Win32_Account where Domain = '" & cstr(objComputerName) & "'"

For Each Admin In objwmi.ExecQuery(qry)
    If (Left(Admin.sid, 6) = "S-1-5-" And Right(Admin.sid,4) = "-500") Then MsgBox Admin.name)
Next

PS:也许有人会发布其他解决方案,说列出组名称是另一种选择......但组名称不是通用解决方案,因为母语。

关于batch-file - 如果 Windows "Admin"用户名已更改,则批处理文件转到下一个 xcopy 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16202760/

相关文章:

batch-file - 为什么批处理文件中的命令 XCOPY 要求文件或文件夹?

visual-studio - 如何使用 xcopy 仅复制较新的文件?

batch-file - .bat 文件中的 '=' 和 ';' 字符是什么意思?

windows - 禁用 Windows 允许通过批处理循环为 USB 设备省电

batch-file - 将输出从 plink 重定向到本地文件时访问被拒绝

Windows 批处理 : findstr not setting ERRORLEVEL within a for loop

file - DOS 批处理 : How to compare the existence of 2 files with the same name in 2 separate folders?

windows - 为什么 XCOPY/W 和 REPLACE/W 为它们的单字符提示消耗所有重定向的文本数据?

windows - "invalid path 0 files copied"使用 xcopy 命令时出错

windows - 使用通配符排除目录