Batch file 使用所有者名称脚本重命名所有文件夹
我正在尝试将文件夹中的文件夹名称更改为文件夹所有者的名称。。 例如,我有一个包含一百个其他文件夹的文件夹,所有文件夹的名称都是“我的文档”,所有文件夹的所有者都不同。 我已经找到了用代码查找名称的方法: 直接/质量Batch file 使用所有者名称脚本重命名所有文件夹,batch-file,cmd,rename,owner,Batch File,Cmd,Rename,Owner,我正在尝试将文件夹中的文件夹名称更改为文件夹所有者的名称。。 例如,我有一个包含一百个其他文件夹的文件夹,所有文件夹的名称都是“我的文档”,所有文件夹的所有者都不同。 我已经找到了用代码查找名称的方法: 直接/质量 但我不知道如何将其放入变量中并使用该变量更改文件夹名称…获取命令输出的常用方法是使用for @echo off for /f "skip=2 tokens=4,*" %%a in ('dir /q /ad^|find "<DIR>"') do ( for /f "to
但我不知道如何将其放入变量中并使用该变量更改文件夹名称…获取命令输出的常用方法是使用
for
@echo off
for /f "skip=2 tokens=4,*" %%a in ('dir /q /ad^|find "<DIR>"') do (
for /f "tokens=2 delims=\" %%i in ("%%a") do (
echo owner=%%i
echo folder=%%b
echo ren "%%b" "%%i"
)
)
@echo关闭
对于/f“skip=2令牌=4,*”%%a in('dir/q/ad^ | find”“)do(
对于/f“tokens=2 delims=\”%%i in(“%%a”)do(
回声所有者=%%i
回显文件夹=%%b
echo ren“%%b”“%%i”
)
)
这是一个批处理脚本——我们将其命名为rename dir by owner.bat
——基于以下代码:
@echo关闭
setlocal EnableExtensions DisableDelayedExpansion
对于/F“delims=”%%U in('
dir/Q/A:D“%~1”^ find“^ findstr/V/R/C:\.\.$”
""做"(
设置“项=%%U”
setlocal EnableDelayedExpansion
设置“项目=!项目:*=!”&设置“项目=!项目:*\=!”
对于/F“tokens=1,*delims=“%%O in(“!ITEM!”)do(
端部
ECHO ren“%~dp1%%P”“%%O”
setlocal
)
端部
)
端部
退出/B
要使用此脚本,请提供包含要重命名的目录作为命令行参数——例如,假设该目录名为父文件夹
:
rename-dir-by-owner.bat "parent-folder"
大写的ECHO
命令用于测试目的;一旦确实要重命名任何项目,请将其删除
解释 上述脚本中使用的core
dir/Q/A:D
命令行的输出类似于:
这些行由外部for/F
循环捕获,每一行都存储在变量项中。之后,直到部分
的所有内容都被删除,然后直到(第一个)\
的所有内容都被切断。ITEM
的剩余内容现在被另一个for/F
循环解析,该循环提取第一个空格前面的所有内容,因此检索所有者的用户名;在空白后面是目录名。两个字符串部分最终都传递给ren
命令(一旦ECHO
消失)
使用这种方法,结果(几乎)不依赖于系统的区域设置和区域设置,因此实现了一个非常通用的解决方案。但是,如果用户名包含空格,则此批处理程序会导致意外结果,但Microsoft不建议这样做--请参阅本文“登录名规则”部分。您可以使用类似于('dir/a:D/Q')do(echo%%O)
的方法获取所有者,假设它不包含空格--在命令提示符中键入for/?
,然后仔细阅读帮助文本。。。请注意,dir
的输出取决于系统的区域设置和区域设置…该设置似乎有效(cmd上没有错误),但文件不会更改…:\在本网站上,通常使用“解除武装”潜在危险代码。当您验证输出是否正常时,删除ren
前面的echo
。现在它得到“Sintax不正确”,因为它使用的名称是“domain\user”。。。我可以删除“\”之前的所有内容吗
Volume in drive D has no label.
Volume Serial Number is XXXX-XXXX
Directory of D:\Data
2016/01/01 00:00 <DIR> NT AUTHORITY\SYSTEM .
2016/01/01 00:00 <DIR> BUILTIN\Administrators ..
2015/07/01 01:00 <JUNCTION> NT AUTHORITY\SYSTEM AppData [C:\Users\aschipfl\AppData\Roaming]
2016/03/21 20:00 <DIR> HOST\aschipfl Documents
2016/05/18 23:00 <DIR> HOST\aschipfl Drawings
2016/04/01 13:00 <DIR> HOST\aschipfl Projects
0 File(s) 0 bytes
6 Dir(s) 2'147'483'648 bytes free
2016/03/21 20:00 <DIR> HOST\aschipfl Documents
2016/05/18 23:00 <DIR> HOST\aschipfl Drawings
2016/04/01 13:00 <DIR> HOST\aschipfl Projects