截断并重命名目录中的子目录

时间:2019-05-29 11:25:55

标签: batch-file

我有几个名为:

的文件夹
001TRIAL1
002TRIAL2
003TRIAL3
...etc.

我正在尝试使用重命名所有文件夹并截断它们以获取:

TRIAL1
TRIAL2
TRIAL3
...etc.

我尝试了以下代码:

for /D %%X in (C:\FOLDER1\FOLDER2\*) do (
    move %%X %%X:~3,10%
)
Pause

但是我无法获得想要的结果。

此脚本不起作用,我不知道该怎么做。重命名允许重命名文件夹,但我无法截断所需的文件夹。

1 个答案:

答案 0 :(得分:2)

您不能像这样扩展一个元变量,需要将值设置为适当的变量,然后执行扩展。另外,由于该变量将在代码块内设置,因此您需要启用延迟扩展。最后,您将使用Ren而不是Move,这将要求该目录已经存在,,并且您需要删除重命名后的原始目录

尝试一下:

@Echo Off
SetLocal DisableDelayedExpansion
For /D %%A In ("C:\FOLDER1\FOLDER2\*") Do (
    Set "_d=%%~nxA"
    SetLocal EnableDelayedExpansion
    If Not Exist "%%~dpA!_d:~3!" Ren "%%A" "!_d:~3!"
    EndLocal
)