【问题标题】:batch: get the name of the owner of a folder批处理:获取文件夹所有者的名称
【发布时间】:2013-04-04 19:17:55
【问题描述】:

我知道在批处理脚本中获取文件夹所有者的唯一命令是:

dir %foldername% /q 

这有两个问题:

  1. 它显示在列表中所有文件夹名称的内容,所以我必须只读 第一行(包含 ".")或者你必须运行

    dir %parent_of_foldername% /q | findstr "%foldername%"

  2. 如果所有者有一个长名称(例如:TrustedInstaller),这将被修剪

这是我的 c:\

13/03/2013  18.33    <DIR>          NT SERVICE\TrustedInstaProgram Files

13/03/2013  18.33    <DIR>          NT SERVICE\TrustedInstaProgram Files (x86)

那么如何在批处理脚本中获取文件夹的所有者名称?

【问题讨论】:

    标签: batch-file dir file-ownership


    【解决方案1】:

    你可以试试这个:

    @echo off &setlocal
    set "foldername=c:\temp"
    set "owner="
    
    for /f "tokens=3*" %%i in ('dir /q %foldername%^|findstr "<DIR>"') do if not defined owner set "owner=%%j"
    echo %owner%
    

    .. 和没有计算机名称的所有者:

    @echo off &setlocal
    set "foldername=c:\temp"
    set "owner="
    
    for /f "tokens=1*delims=\" %%i in ('dir /q %foldername%^|findstr "<DIR>"') do if not defined owner set "owner=%%j"
    echo %owner%
    

    第三种方法(返回我机器上的全名):

    @echo off &setlocal
    set "foldername=c:\temp"
    set "owner="
    
    for /f "tokens=2delims=\:" %%i in ('cacls "%foldername%" ^| find "%computername%"') do set "owner=%%i"
    echo %owner%
    

    【讨论】:

    • 好的,这是一个解决方案,我知道,但是:1) 非常慢 (dir. .. findstr ..) 2) 对于名称大于 23 的所有者字符不起作用(例如,“NT SERVICE \ TrustedInsta”被截断
    【解决方案2】:
    @ECHO OFF
    SETLOCAL
    SET "owner="
    FOR /f "tokens=2delims=\" %%i IN ('dir /q "%~1"' ) DO IF NOT DEFINED owner CALL :setown %%i
    ECHO owner of "%~1" is %owner%
    
    GOTO :eof
    
    :setown
    SET owner=%*
    :setownl
    SET $2=%2
    IF defined $2 shift&GOTO setownl
    IF NOT "%1"=="." SET "owner="&GOTO :eof
    SET owner=%owner:~0,-2%
    GOTO :eof
    

    是我的解决方案。对我有用...

    【讨论】:

      【解决方案3】:

      http://msinfluentials.com/blogs/jesper/archive/2007/07/02/show-the-owner-of-a-file.aspx 的作者 Jesper Johansson 感叹除了 dir /q 之外没有内置命令,但列出了一些其他可以工作的命令行工具。

      • SubInACL.exe
      • FileACL.exe(我找不到这个可用的了)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-09
        • 1970-01-01
        • 2011-12-26
        • 2014-10-22
        相关资源
        最近更新 更多