以下循环并不总是只生成创建者用户。很多时候它将用户与文件夹连接起来。我不知道它是否是批次的某种限制,或者我错过了什么
for /f "tokens=5,* SKIP=4" %%b IN ('dir "%folder%" /Q /TW /AD') do (
ECHO User: %%b
)
大约90-95%的时间给了我用户,但有时它给了我user_folder
User: AAAAAAAAAADEV\iasimo_dFLD001_FLD001
答案 0 :(得分:1)
最有可能因为dir列的大小固定。 建议你使用另一种方法
1)WMIC:
@echo off
set "folder=C:\Windows\System32"
for /f "tokens=* delims=" %%a in ("%folder%") do (
set "fpath=%%~pa"
set "fname=%%~na"
set "fdrive=%%~da"
)
set "fpath=%fpath:\=\\%"
for /f "usebackq tokens=* delims=" %%a in (`wmic path Win32_Directory where "path='%fpath%' and drive='%fdrive%' and filename='%fname%'" get CSName /format:value`) do (
for /f "tokens=* delims=" %%z in ("%%a") do (
if "%%z" neq "" (
set "%%z"
)
)
)
echo %CSName%
2)tooltipInfo.bat。要获得文件夹/文件所有者,您需要使用10"幻数" (10是所有者174是为创作者):
call tooltipInfo.bat "c:\something" 10
你应该给你输出如下:
c:\something :
pc\user
还有其他可能的方法。
答案 1 :(得分:0)
for /f "tokens=4 SKIP=4" %%b IN ('dir "%folder%" /Q /TW /AD') do (
ECHO User: %%b
)
这适用于我的系统(用户是第4列)。
编辑:在Win 7和Win 8.1中都进行了测试
答案 2 :(得分:0)
所以我最终做了一点点笨拙的方式 - 似乎用户列是22个字符,每当域名/用户名命中时我都会遇到这个问题。我通过将用户名后的所有内容作为单个令牌解决它,然后在第22个字符之后删除所有内容(下面的代码是获取文件夹名称 - 基本相同但我需要两个以便我如何得到它)。
for /f "tokens=1-4,* SKIP=4" %%b IN ('dir "%%a" /Q /TW /AD') do (
set _folder=%%f
SET _folder=!_folder:~23!
)