删除.bat文件中的文件名

问题描述 投票:0回答:3

我正在尝试使用.bat脚本重命名文件夹中的一堆文件。

原始文件名:S2A_MSIL2A_20200322T184031_N0214_R070_T11UPA _ 20200322T225116 _ A03.nc

[粗体部分(第二个日期/时间)是我要删除的部分

目标文件名:S2A_MSIL2A_20200322T184031_N0214_R070_T11UPA_A03.nc

我已经尝试过:

rename "S??_??????_???????????????_?????_????_??????_???????????????_???.nc" "S??_??????_???????????????_?????_????_??????_???.nc"

文件的不同部分应始终具有相同数量的字符,并且所有文件均以S开头并以.nc结尾

...但是它似乎无法正常工作。有时文件没有被重命名,有时文件被重命名,但是不正确。有人可以帮忙吗?我已经在stackexchange上进行了许多搜索以尝试解决此问题,但其他解决方案似乎都无效-我需要什么正则表达式?

以下是要重命名文件的其他一些示例:S2A_MSIL2A_20200322T184031_N0214_R070_T12VVJ_20200322T231131_A03.ncS2A_MSIL2A_20200322T184031_N0214_R070_T12VVK_20200322T231131_A01.ncS2A_MSIL2A_20200322T184031_N0214_R070_T12VVK_20200322T231131_A02.ncS2A_MSIL2A_20200322T184031_N0214_R070_T12VVK_20200322T231131_A03.ncS2A_MSIL2A_20200322T184031_N0214_R070_T12VWK_20200322T231131_A01.nc

应成为:

S2A_MSIL2A_20200322T184031_N0214_R070_T12VVJ_A03.ncS2A_MSIL2A_20200322T184031_N0214_R070_T12VVK_A01.ncS2A_MSIL2A_20200322T184031_N0214_R070_T12VVK_A02.ncS2A_MSIL2A_20200322T184031_N0214_R070_T12VVK_A03.ncS2A_MSIL2A_20200322T184031_N0214_R070_T12VWK_A01.nc

regex batch-file batch-processing batch-rename
3个回答
0
投票
> set name=S2A_MSIL2A_20200322T184031_N0214_R070_T12VVJ_20200322T231131_A03.nc > echo %name% S2A_MSIL2A_20200322T184031_N0214_R070_T12VVJ_20200322T231131_A03.nc > echo %name:~0,44%%name:~60% S2A_MSIL2A_20200322T184031_N0214_R070_T12VVJ_A03.nc

1
投票
@echo off setlocal ENABLEDELAYEDEXPANSION cd /D %1 for %%F in (*.nc) do ( set oldName=%%F set newName=!oldName:~0,44!!oldName:~60! rename !oldName! !newName! )

注:%1是包含要重命名的文件(在D:驱动器上)的文件夹的路径,在命令行中作为.bat文件的参数提供。

重要的是定义变量时没有空格! (例如,oldName = %% F无效,而oldName = %% F有效)

0
投票
FOR /F

Screenie:@echo off FOR %%F in (*.nc) do ( FOR /F "tokens=1-8 delims=_" %%a in ("%%~nF") do ren "%%F" "%%a_%%b_%%c_%%d_%%e_%%f_%%h.nc" )

© www.soinside.com 2019 - 2024. All rights reserved.