我有一系列有长文件名的文件。对于每个包含连字符的文件名,我希望将子字符串保留在6-8位置,将_FM07_FY14.prn追加到名称中,忽略原始文件名的其余部分。新的扩展现在是.prn。两位数07代表月份,14是年份。月和年可以从“创建日期”属性中找到。如果你能告诉我如何从创建的日期自动捕获这个mm和yy,我将非常感激。硬编码这个部分也是可以的,因为我可以根据创建的日期对文件进行排序,并将它们放在单独的文件夹中。
例如
will 1234.A.b.1233新文件名为D07_FM01_FY14.prn
BcbaA30dls-d343.a.123d新文件名为A30_FM01_FY14.prn
新文件名为G12_FM01_FY14.prn
这是我在阅读了很多文章之后想到的.bat文件,我不知道如何提取mm和yy,所以我对它进行了硬编码。我不熟悉Powershell。我只能处理.bat或.cmd文件,并在命令提示符下运行它。任何和所有的帮助都将受到高度赞赏。谢谢!
@ECHO OFF
SETLOCAL
for %%F in (*.*) do (
SET "name=%%a"
set "var=_FM01_FY14.prn"
ren *-* "%name:~6,8%var%"
)
*endlocal*发布于 2014-07-15 00:39:11
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\one"
PUSHD %sourcedir%
FOR /f "delims=" %%a IN (
'dir /b /a-d "*" '
) DO (
SET name=%%a
SET fdate=%%~ta
ECHO(REN "%%a" "!name:~5,3!_FM!fdate:~3,2!_FY!fdate:~8,2!.prn"
)
popd
GOTO :EOF您需要更改sourcedir的设置以适应您的情况。
我使用的日期格式是dd/mm/yyyy,如果您的格式不同,则需要更改!fdate:~m,2!短语中的偏移量。m的值是从第一个字符到日期字符串的偏移量(第二个参数是要选择的字符数)。
所需的REN命令只是为测试目的而编写的ECHO。在验证命令是正确的之后,将ECHO(REN更改为REN以实际重命名文件。
https://stackoverflow.com/questions/24728449
复制相似问题