Batch file 删除多个文件夹的最后n个字';s名称,并使用批处理将剩余的最后一个单词括起来

Batch file 删除多个文件夹的最后n个字';s名称,并使用批处理将剩余的最后一个单词括起来,batch-file,directory,namespaces,word,batch-rename,Batch File,Directory,Namespaces,Word,Batch Rename,我是新来的。我感谢你的帮助。我在当前目录中有多个文件夹,名称如下: word1 word2 word3 word4 word5 word6 word7 word8 word9 我需要一个删除最后n个单词,并在所有文件夹名称中添加空格,然后在括号中插入剩余的最后一个单词。正如您所看到的,单词由空格分隔,它们的长度不相同,例如,如果n=3导致: word1 word2 word3 word4 word5 (word6) 反正是tnx,但不是我的意思,正如我提到的,这些词是无法识别的,它们必须以某

我是新来的。我感谢你的帮助。我在当前目录中有多个文件夹,名称如下:

word1 word2 word3 word4 word5 word6 word7 word8 word9
我需要一个删除最后n个单词,并在所有文件夹名称中添加空格,然后在括号中插入剩余的最后一个单词。正如您所看到的,单词由空格分隔,它们的长度不相同,例如,如果n=3导致:

word1 word2 word3 word4 word5 (word6)

反正是tnx,但不是我的意思,正如我提到的,这些词是无法识别的,它们必须以某种方式定义。这里是通过
设置“string=…
。要处理文件夹,您可以使用
for/d
循环(有关详细信息,请参阅
for/?
):/Off-理所当然地定义了文件夹。单词被空格困住了,例如n=3,它需要数到三个空格,然后将其切掉。极大的改进tnx工作了这么多,但并不完全有效。测试了它的n=3,foldername=word1 word2 word3 word4返回:~1sub1)和n=1,foldername=New folder返回:~1sub1)。该代码一次运行不能处理20个以上的文件夹。它也不能处理包含括号的名称。关于括号,你是对的(你的问题中没有提到)。我无法复制
~1sub1)
问题,不应该将其限制为仅20个文件夹。欢迎使用。因为这不是一个免费的代码编写服务,所以在回答您的问题之前,您需要展示自己的努力。因此,请张贴您迄今为止尝试的内容(即您的代码)以及失败的地方。
@echo off
setlocal enabledelayedexpansion
set n=3
for /d %%d in ("*") do (
  call :reformat "%%d" %n%
  echo --!newstring!--
  ren "%%d" "!newstring!"
)
goto :eof

:reformat
set "newstring="
set i=0
for %%a in (%~1) do (
  set /a i+=1
  set "sub!i!=%%a"
)
set /a x=i-%2
for /l %%a in (1,1,%x%) do (
  if %%a == %x% (
    set "newstring=!newstring:~1! (!sub%%a!)"
  ) else (
    set "newstring=!newstring! !sub%%a!"
  )
)