从文件名Windows脚本修剪日期

时间:2015-04-13 16:03:17

标签: windows batch-file

如何修剪文本文件中的日期。例如,我有多个文件,如:

  • test_MX_abc_20091011.txt

  • test_MX_pqrdhdsu_20091011.txt

  • test_MX_xyieuz_20091011.txt

所有文件都有共同的test_MX,但第三部分的大小不同。

我想换成:

  • test_MX_abc.txt
  • test_MX_pqrdhdsu.txt
  • test_MX_xyieuz.txt

我知道如果名称与test_20091011.txt一样,如果使用以下代码更改文件,但如果名称中包含更多字符串以及日期,该怎么做?

for /F "tokens=1 delims=_" %%i in ("%%~na") do (
     move /Y %%~fa %data_in%\%%i%%~xa >nul
)

提前致谢。

1 个答案:

答案 0 :(得分:0)

此重命名操作可以通过以下方式完成:

@echo off
for /F "tokens=1-3* delims=_" %%A in ('dir /A-D /B test_MX_*.txt') do (
    ren "%%A_%%B_%%C_%%D" "%%A_%%B_%%C.txt"
)

每个文件名分为4个字符串,分配给循环变量 A D ,并使用下划线作为分隔符。循环变量 D 在第三个下划线之后获取文件名的所有内容。

或者也为3个文件工作:

@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%F in ('dir /A-D /B test_MX_*.txt') do (
    set "ActFileName=%%~nF"
    set "NewFileName=!ActFileName:~0,-9!"
    ren "%%~F" "!NewFileName!.txt"
)
endlocal

此解决方案分配没有文件扩展名的文件名和环境变量ActFileName的路径。接下来,定义名为NewFileName的新环境变量,其中活动文件的名称不包含最后9个字符(下划线和日期字符串)。接下来在重命名操作中使用此修改后的文件名。

可以在Stack Overflow上找到使用命令设置 ren 的其他解决方案。
用字符串

搜索
[batch-file] for set rename files

并且使用或多或少类似的内容提供了600多个结果。

有关使用过的命令的详细信息,请打开命令提示符窗口,在其他命令之后执行一个命令并阅读输出帮助。

  • dir /?
  • for /?
  • ren /?
  • set /?