在 Windows 中,我尝试使用命名约定“Name (2016)
“ 将 至 ”2016 - Name
“, 反而。
我尝试编写一个 PowerShell 脚本,但是遇到了一些麻烦,由于我对语法等缺乏全面的了解,因此想寻求帮助。
我认为下面的脚本不起作用,因为“ \(.*\)
”的意思是“括号内的内容”......
我的工作(不起作用)
get-childitem | foreach { rename-item $_ $_.Name.Replace("\(.*\)", "") }
我脑子里的想法是以某种方式将变量设置为括号内的任何内容,如“Name (x)
“然后将其重命名为”x - Name
“我很迷茫,需要帮助,但这是我的工作。
答案1
由于您展示了您的工作并且没有其他人尝试过,所以我编写了下面的Batch
脚本,就像Batch
您问题上的标签表明您正在寻找解决方案一样。
确保将SET SrcDir=
变量的文件夹路径设置为文件所在的位置。根据您提供的文件名示例,我进行了测试,结果显示此方法 100% 准确。
如果您正在寻找更多内容,请提供更多详细信息,例如所有完整文件名示例。
批处理脚本示例
@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET SrcDir=C:\Users\User\Desktop\Test
FOR /F "TOKENS=1-3 DELIMS=() " %%A IN ('DIR /B /A-D "%SrcDir%\* (*)*"') DO (
SET "part1=%%~A"
SET "part2=%%~B"
SET "part3=%%~C"
REN "%SrcDir%\!part1! (!part2!)!part3!" "!part2! - !part1!!part3!"
)
GOTO :EOF