2013-04-04 21 views
1

唯一的命令,我知道得到一個文件夾的所有者在批處理腳本的所有者的名稱是:批:得到一個文件夾

dir %foldername% /q 

這有兩個問題:

  1. 它在列表中顯示所有文件夾名的內容,所以我只讀取 第一行(其中包含< DIR>「」)或者您必須運行

    dir%parent_of_foldername%/ q | FINDSTR 「%文件夾名稱%」

  2. 如果主人有一個很長的名字(爲例:的TrustedInstaller),這將被修剪

這裏是我的C:\

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

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

那麼如何才能我在批處理腳本中獲取文件夾的所有者名稱?

回答

2

你可以試試這個:

@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% 
+0

沒關係,這是一個解決方案,我知道這一點,但: 1)是很慢的( dir。findstr ..) 2)在名稱大於23個字符的所有者的情況下不起作用(例如,「NT SERVICE \ TrustedInsta」被截斷 – CSG 2013-04-04 20:16:57

+0

作出編輯,但無法加速你的電腦:) – Endoro 2013-04-04 20:23:50

0
@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 

是我的解決方案。適用於我...

相關問題